在Python中,模块是代码组织的一种方式,把功能相近的 函数 或 类 放到一个文件中,
一个文件(.py)就是一个模块(module)
模块名就是文件名去掉后缀.py
这样做的好处是:
1.提高代码的可复用、可维护性,一个模块编写完毕后,可以很方便的在其他项目中导入
2.解决了命名冲突,不同模块中相同的命名不会冲突
导入模块:
1.import 模块名 / 模块名.变量 / 模块名.函数 / 模块名.类
2.from 模块名 import 变量/函数/类
在代码中可以直接使用 变量、函数、类
3.from 模块名 import *
该模块下的所有内容
但是如果想限制获取的内容,可以在模块中使用__all__=[...]
([...]里面放可以访问到的内容)
4.无论是import还是from...import的形式,都会将模块中的内容进行加载
如果不希望其进行调用,就会用到__name__
在自己的模块里面__name__叫:__main__
如果在其他该模块中通过导入的方式调用的话:__name__:自己的模块名
重点解释3,4
自定义模块代码:(模块名:calculate.py)
1 __all__ = ['test']
2
3
4 def test():
5 print("calculation 正在测试中……")
6
7 def call():
8 print("call方法正在被调用中....")
9
10 print("__name__:",__name__) # __name__: __main__
11
12 if __name__=="__main__":
13 # 此时的__name__ 即 __main__
14 test()
导入该模块:(模块名:模块_01.py)
1 # 重点解释 3
2 """
3 from 模块名 import *
4 该模块下的所有内容
5 但是如果想限制获取的内容,可以在模块中使用__all__=[...]
6 ([...]里面放可以访问到的内容)
7 """
8
9 from calculate import *
10
11 if __name__ == "__main__":
12 test()
13 call() # 此时 因为 calculate.py中 __all__ = ['test'],限制call的调用,所以无法直接使用
14
15 """
16 __name__: calculate
17 calculation 正在测试中……
18 """
注意:
from calculate import * 在使用中,如果显示无法导入该模块,可以通过将包设置为程序代码的根目录
具体操作为:
1.打开"文件"->设置 打开 Console下的Python Console,把选项(Add source roots to PYTHONPAT)点击勾选上
2.右键点击自己的工作空间(即自己的文件目录),右键 找到 Mark Directory as ,选择 sources root 即可
如果将 calculate.py 中__all__改为__all__ = ['test','call'],那么模块_01.py中的call()可以正常使用
注意两个.py文件中,__name__ 名字的变化,在在自己的模块里面__name__叫:__main__
如果在其他该模块中通过导入的方式调用的话:__name__:自己的模块名