模块
模块基础
模块的定义
模块就是存放一堆函数的文件
包的定义
把一堆是模块的文件放在一个文件夹,这个文件夹就是包
此文件夹下需要有一个__init__.py文件
模块的优势
直接使用第三方模块,拿来主义
把公共功能做成自定义模块,让各个组件调用
import & from ... import ...
需要了解两者的区别
篇幅有限,这里省略100字……
循环导入问题
为什么会有循环导入问题?
模块a需要导入模块b中的b1变量来生成a1变量
而
模块b需要导入模块a中的a1变量来生成b1变量
两者互相牵制,故产生了此问题
# 模块a的内容
import b
a1 = b1
print(a1)
# 模块b的内容
import a
b1 = a1
print(b1)
# 报错
# NameError: name 'b1' is not defined
解决方法
# m1.py
def f1():
from m2 import y
x = 10
f1()
# m2.py
def f2():
from m1 import x
y = 20
f2()
模块的搜索路径
导入模块时查找模块的顺序是:
-
先从内存中已经导入的模块中寻找
-
内置的模块
-
环境变量sys.path中找
Python文件的两种用途
如果不希望文件被当做模块导入时,执行某些代码,可以把代码放在如下的判断语句内
if __name__ == '__main__':