Python3-模块

在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__:自己的模块名

原文地址:https://www.cnblogs.com/DemonKnifeGirl/p/13033281.html