包的创建

1.创建一个目录project

2.在project目录下创建__init__.py,a.py,b.py(a.py

和b.py有函数,就是模块 ),

其中__init__.py供调用其他模块的函数 写入: from a import * ,from b import *

在构造函数__init__.py,相当于初始化创建的实例,

后面再a.py或者b.py 模块中 想彼此跨模块调用函数,可以直接通过 :引入包名 import project  包来实现包内的模块间引用

,就减少模块引用 还要以包名.模块名.*   ,如 本例中 在b.py 模块中引用a模块函数就需要写成: project.a.* 

---注意构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数的时候,会自动调用构造函数并完成参数的初始化

对比: __init__.py  构造函数内不写入内容时:在其他模块调用

引用时需要:import 包名称.模块名称

调用函数时:包名称.子包名.模块名称.方法名称

 

__init__.py 构造函数写入内容:import a 后,引入包内模块函数的方法:

引用时不需要写入模块 即import 包名.子包名

调用函数时需要:包名.子包名.模块名.方法名

3.__init__.py 写入 from a import *  引入模块方法后

引用模块时不需要引用 模块名称  :import 包名

调用函数时:包名.函数名

4.如果引入包的方法:from 包名 import * ,

调用函数时:模块名.函数名

总结:在__init__引用  模块名  或者引用模块的方法后,,对应的模块引用都可以相应减少这部分引用,

而函数调用,是引入什么,用什么调用,如引用了包名,直接用包名调用方法,引入了方法,直接用模块名调用方法

如__init__ 没有任何引用,空文件,模块引用时:import 包名.子包名.模块名,函数调用时:包名.子包名.模块名.函数名

如__init__  引用:import a(模块名)   模块引用 :import 包名.子包名 即可,函数调用时:包名.子包名.模块名.函数名:比上一个 只是少引用一个模块名,调用时不减少

如__init__ 引用:from a import *  (引用模块下的所有函数)        模块引用时:  import 包名.子包名   或者 from 包名  import *,函数调用时对应前面的模块引用:包名.函数名,第二种模块名.函数名:比上一个引用没有减少,但是调用减少 少了包或者模块名(具体根据引用时判断)

原文地址:https://www.cnblogs.com/zyy98877/p/9272361.html