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 *,函数调用时对应前面的模块引用:包名.函数名,第二种模块名.函数名:比上一个引用没有减少,但是调用减少 少了包或者模块名(具体根据引用时判断)