python--包、模块调用
Python中一个文件夹可以称作为一个包,文件夹下的文件可以称为模块
模块之间可以相互调用
在一个文件下创建两个py文件,里面的变量等,是可以相互调用的
m1.py
b = [1,2,3,4]
m2.py
import m1
print(m1.b)
也可以
import m1 as m (嵌套的层级太多时,避免输入过长字符)
print(m.b)
python import 的另一种方法:
from m2 import b
print(b)
import 导入的是具体的模块,from导入的是具体的模块加变量
当导入的变量很多是可以用 * 代替
模块内置的系统变量
m1.py
__all__ = ['a','c']
a = 2
c = 3
d = 4
m2.py
from m1 import *
print(a)
print(c)
print(d)
这是只会打印出a和c,但是如果先打印d,则不会打印出c,因为代码执行到print(d)会报错。
代码换行
代码末尾添加\
也可以使用()
from m1 import a,b\
c
print(a)
from m1 import (a,b
c)
print(a)
导入一个包下的模块或变量到另一个文件中,该包下的 __init__.py 也会跟随自动执行
__init__.py的作用:
批量导入变量
__init.py
import sys
import datetime
m3.py
import t
print(t.sys.path)
目录层级关系:
D:\files\python\t\__init__.py
D:\files\python\m3
__init__.py 添加 __all__ = ['m1']
在另一个文件导入* 时,只会打印出m1内的变量,不会打印其他模块的变量。
注意包和模块导入:
包和模块是不会被重复导入的
避免循环导入,循环导入:两个文件相互引用变量,也可能是多个文件相互引用,形成了一个闭环。
m5.py
from m5 import m5
m4 = 1
m4.py
from m4 import m4
m5 = 6
print(m4)
这样会报错的
导入一个模块时,模块里的全部代码也会被执行。
m4.py
m4 = 1
print(m4)
m5.py
import m4
m5 = 6
执行m5.py 时 同样会打印出m4
注意:在另一文件运行导入模块时,一定要先保存导入的模块内容。
当你的才化撑不起野心时,还是安静下来学习吧!