模块
以.py结尾的文件都可以是模块,模块里的定义的变量,函数,类等都可以被导入使用
import 模块名 # 使用这个方式导入的模块名,要使用模块名.的方式调用模块中的方法等
from 模块名 import 工具名 # 使用这种方式可以直接使用导入的方法等,但是要小心重命名冲突问题,建议采用模块名.方式调用
from 模块名 import 工具名 as 别名
from 模块名 import *
import m01
# 模块名.__file__属性用于获取模块的文件路径
print(m01.__file__) # 获取模块的文件路径,D:\MyPythonWorks\基础部分\module_and_packet\m01.py
# 模块名.__name__属性用于获取模块名,被导入是该属性值为模块名
print(m01.__name__) # __name__属性用于获取模块名,当模块被主动调用时该属性值为__main__
包
包就是多个模块文件组成文件夹,每个包和子包中必须要有 __init__.py
文件才能让 Python 将包含该文件的目录当作包。
系统搜索路径设置
系统的模块搜索路径,当模块被导入到python时,解释器会先在内置模块中寻找该模块,没有会根据sys.path列表中的路径进行搜索该模块。
sys是系统标准模块,通过导入该模块,可以查收下系统模块搜索路径,和修改搜索路径。
import sys
print(type(sys.path)) # 类型为列表
print(sys.path) # ['D:\\MyPythonWorks\\基础部分\\module_and_packet', 'D:\\MyPythonWorks',.......]
sys.path.insert(0, "C:\\jier771") # 修改系统搜索列表,添加搜索目录
print(sys.path) # ['C:\\jier771', 'D:\\MyPythonWorks\\基础部分\\module_and_packet', 'D:\\MyPythonWorks',.....]
ret = dir(m01) # dir函数,获取模块中所有定义函数、变量等能定义的名称
print(type(ret)) # <class 'list'>,返回列表
print(ret) # ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__'
# , '__spec__', 'addOne', 'say'] 只有addOne和say函数是该模块自定义的,其它都是默认的
print(dir()) # 返回当前模块中定义的名称
系统编译文件
编译过的源文件,为了加速模块的载入,提高文件的载入速度,python会编译编写好的.py文件,放在__pycache__
目录中,该目录存放每个模块的编译后版本,编译后名称为模块名.python编译器版本.pyc
,如m01.py文件编译后为m01.cpython-38.pyc文件。编译过程是自动化执行的,无源的模块不会检查缓存。