__all__
在导入模块时针对from 模块名 import 类/变量/函数这种方法,我们可以使用from 模块名 import * 默认导入该模块中所有功能,作用等同于import 模块名。
但是如果模块中有全局变量__all__,使用“*”就会导入全局变量__all__中的功能,因此如果要以“*”的方式导入该模块所有的功能,通常在全局变量中添加该模块所有的功能。
[Python] 纯文本查看 复制代码 __all__ = ["add","sub","mul","div"]
def add(a,b):
return a+b
def sub(a,b):
return a-b
def mul(a,b):
return a*b
def div(a,b):
return a/b
if __name__ == '__main__':
a = 10
b = 2
print("和为:%g"%add(a,b))
print("差为:%g"%sub(a,b))
print("积为:%g"%mul(a,b))
print("商为:%g"%div(a,b))
这种就是添加了全局变量的模块。
package包
包是一个分层次的文件目录结构,它定义了一个有模块及子包和子包下的子包等组成的Python的应用环境,包中要包含一个__init__.py模块。可以理解为电脑中的文件夹。
将模块放入包中后,模块的路径会发生变化,因此导入时需要使用import 包名.模块名的方式导入。在使用模块中的方法时使用包名.模块名.方法即可。
__init__.py模块
类中的__init__是一个初始化方法,而包中的__init__.py是一个初始化模块,因为是一个模块,所以可以存放所有模块可以存放的类、函数、变量、可执行代码。
在首次导入包中的模块时,会优先执行一次__init__.py中的代码。
在__init__.py 中一般会写一些辅助代码,可以更加方便的使用模块。
[Python] 纯文本查看 复制代码 import MyMath
或者[Python] 纯文本查看 复制代码 from .MyMath import *
例如在__init__中导入包中的某个模块,可以有两种写法,在导入包名之后相当于导入了该模块。使用模块中的方法同样是包名.模块名.方法。 |