Python摘录
摘录自:Python核心知识系列:Python工程组织结构
1. import 只能引入模块,不能直接引入变量或函数。
import package1.module1 import package1.module2 as pm2 # 多层调用太长,可以重命名 print(package1.module1.var1) print(pm2.num1) # 输出 Python 1View Code
2. from... import 可以导入模块、变量或函数。
from package1 import module1 from package1 import module2 print(module1.var2) print(module2.num2) # 输出 Go 2导入模块
from package1.module1 import var3 # 导入变量或函数 print(var3) # 输出 Java
from package1.module1 import var3 print(var3) # 输出 Java导入变量或函数
3. 在module2.py
模块中定义了__all__=['num1', 'num2']
,则导入模块module2.py
时只可导入num1, num2
,其他内容不可见。
__all__
属性仅在使用import *
时才有效。
4. 导入模块换行
# 使用 \ from package1.module2 import num1, \ num2, num3 # 使用(),推荐这种方式 from package1.module2 import (num1, num2, num3)View Code
5. 包和模块不会重复导入:在导入一个模块的时候,就会执行这个模块里的所有内容,但是多次导入只执行一次。
6. 导入模块时,默认情况下python解析器会搜索当前目录、已安装的内置模块和第三方模块,搜索路径存放在sys模块的path中。sys.path返回一个列表,
使用sys.path.append(' ')添加自定义的搜索目录。
7. _init_.py的用法
- 用来标识该文件夹是一个包。
- 导入包或包下的模块时,
__init__.py
文件被自动执行。 __init__.py
文件中也可以利用__all__
来限制导入的模块。- 如果在项目中有模块是多个文件共用的,可以把这些模块在
__init__.py
导入
8. Python不需要显式提供 main() 函数入口。在Python文件中,__name__ == '__main__'
被用于定义入口文件。这些文件既可以作为模块被导入,也可以执行。如果文件作为模块被导入,__name__
被赋值模块的名字。当文件执行被执行时,__name__
为__main__
。
if __name__ == '__main__': pass
摘录自:Python项目组织结构-第二节:模块内置变量
1. 在Python中变量有两类,一类由用户定义,另一类叫做内置变量,调用dir()
函数会返回一个列表,里面包含了所有内置变量和所有自定义变量。内置变量会以__[]__
的形式命名。
2. Python中模块被导入时其中的语句是会自动执行的,因此这就产生了一个问题——如何区分这个模块是直接被执行的还是说它是被导入后才被执行?
因此,在Python中就会有如下非常经典的语句:
if __name__ == '__main__' print("这是入口文件") else print("这是导入")View Code
3. 一般来说,常规的Python项目组织结构如下,其中main.py
作为入口文件。在上面展示的目录结构中,模块最顶级的包并不是Python study
,而是由入口文件决定的,和入口文件平级的就是顶级包。
4. 绝对导入和相对导入
绝对导入: 从顶级包开始逐级寻找模块的导入方式,要判别清楚哪一个才是真正的顶级包。
import module1.p1
相对导入: 和相对路径类似,用.
代表当前目录、用..
代表上一级目录