一、面向过程编程
面向过程编程核心就是过程二字,过程指的是解决问题的步骤,即先干什么,再干什么,然后再做什么,基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式
优点:
将复杂的问题流程化,进而简单化
缺点:
扩展性极差
二、模块的使用
1、什么是模块
模块是是一系列功能的集合体,常见的模块形式:
a、自定义模块
b、第三方模块
c、内置模块(c语言编写的)
1)一个module.py文件就是一个模块,文件名是module.py,而模块名是module
2)一个包含有__init__.py文件夹也是模块
2、为什么要用模块
1)用第三方或者内置的模块是一种拿来主义,可以极大地提升开发效率
2)自定义模块即将我们自己程序中需要用到的公共功能写入一个python文件中,然后程序各部分组件可以通过导入的方式来引用/重用自定义模块中的功能
注:python文件被当作模块导入时:
__name__的值是模块名或者文件名
python文件被执行时__name__='__main__'
3、如何用
导入的方式有两种:
import模块名
from 模块名 import 具体的功能
a、import方式导入模块的过程:
首次导入模块的时候发生三件事:
1、以模块为准创造了一个模块的名称空间
2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
3、在当前执行文件中拿到一个模块名
注:之后的重复导入会直接引用之前造好的结果,不会重复执行模块的文件
模块导入的大前提:模块是被执行文件导入使用,模块的导入必须搞清楚谁是执行文件谁是被导入模块
使用方法:指名道姓的访问m1名称空间中的名字func,优点:不会与当前名称空间中的名字冲突,缺点:每次访问都需要加上前缀
b、from ... import ...
首次from m1 import func导入模块都发生三件事:
1、先创建一个模块名称空间
2、执行m1.py将执行过程中产生的名称都放入模块的名称空间中
3、在当前执行文件中直接拿到一个功能名func,名字是直接指向模块名称空间中的某一功能的
使用方法:直接使用即可,优点:无需加任何前缀。缺点:容易与当前名称空间中的名字冲突
强调:
程序中尽量避免循环导入,因为1导入2的时候,发生3件事,会执行2的代码,这时候2如果去导入1,1还在导入2,导致1下面代码还没执行到,名称空间 还没产生这样2就访问不到里面的属性就会报错,如果非要循环导入,有两种解决方案:
a、将import写到函数中
b、将import放入全局变量后
4、路径
一个py文件就是一个模块,在导入时必须从某一个文件夹下找到该文件
模块的搜索路径是:
内存→内置模块→环境变量(sys.path)