常用内置模块
- getpass模块
- os模块(与操作系统交互)
- sys模块(与python解释器交互)
- subprocess模块(执行系统命令)
- hashlib模块(加密相关)
- json和pickle(序列化使用)
- shutil模块
- time模块
- datatime模块
- re模块
- random模块
- ConfigPrarser模块
- traceback模块
- itertools模块
- logging模块(用于便捷记录日志且线程安全的模块)
查看详细https://www.cnblogs.com/xh0203/p/12662693.html
模块查找顺序
- 在当前目录,即当前执行的程序文件所在目录下查找。
- 到PYTHONPATH(环境变量)下的每个目录中查找。
- 到Python默认的安装目录下查找。
以上所有涉及到的目录,都保存在标准模块sys的sys.path变量中,通过此变量我们可以看到指定程序文件支持查找的所有目录。如果需要导入的模块没有储存在sys.path显示的目录中,那么导入该模块并运行程序时,Python解释器就会抛出ModuleNotFoundError(未找到模块)错误。
解决“Python找不到指定模块”的方法:
- 向sys.path中临时添加模块文件存储位置的完整路径。
- 将模块放在sys.path变量中已包含的模块加载路径中。
- 设置path系统环境变量。
__init__.py文件作用
使用Python模块常见的情况是,事先写好A.py文件,需要import B.py文件时,先拷贝到当前目录,然后再import这样的做法在程序量较小的情况下是可行的,如果程序交互复杂程度稍高,就很费力。
有一种解决方法可以将多个.py文件组织起来,方便在外部统一调用,和在内部统一调用:朋友她和你中的__init__.py在包调用中起到了重要的作用。
首先要明确,Python在执行import包的时候,执行的操作:
- 创建一个新的、空的module对象(它可能包含多个module)
- 把这个module的代码插入sys.module中
- 装载module的代码(如果需要,首先必须编译)(首先需要找到module程序所在的位置,其原理为,如果需要导入的module的名字是m1,则解释器必须找得到m1.py,它首先在当前目录查找,然后是在环境变量PYTHONPATH中查找)
- 执行新的module中对应的代码
Python中的package定义很简单,其层次结构与.py所在目录的层次结构相同,比较关键的一点是package中必须包含一个__init__.py文件。
__name__作用
- __name__是python的一个内置类属性,它储存模块的名称。
- python的模块既可以被调用,也可以独立运行。而被调用时__name__存储的是py文件名(模块名称),独立运行时存储的是“__main__”。
- 那么它的作用主要就是用来区分,当前模块是独立运行还是被调用。