包、模块及 `__name__ ==“main“`

包、模块及 __name__ =="main"

代码组织方式

module模块式组织代码的基本方式;当.py脚本被import导入,将其称为模块module,所有的.py文件都可以理解为一个模块。
模块名与脚本.py文件同名,如 items.py作为模块import其他脚本中import items

Python模块可以按照目录组织为包Package。包是一堆按照目录组织的模块和子包,目录下的__init__.py文件存放了包的信息,创建一个包package的步骤是:
–建立一个名字为package name的文件夹;
–在该文件夹下创建一个__init__.py文件(可以为空);
–跟句需要在该文件夹下存放 脚本文件.py、已编译扩展及子包 .pyc .pyo(编译后的2类文件也可以作为module导入)

# case
cal.py文件中定义了 + - * /几种算数运算函数jia(),jian(),cheng(),chu()
在usecal.py文件中调用算数运算的方法是:
import cal
cal.jia()
cal.jian()

问题思考?

但是会涉及一个问题,导入的模块内部本身可能已经定义了一些函数调用的执行(当其自身作为主函数main执行时),但当作为模块导入给其他py脚本时并不想执行module内的函数调用语句,如何解决?

也就是要区分 主调用方式python a.py执行,与被 import 执行的不同

揭晓答案啦,思考过后再看哦

使用Python的一个内置属性,可以在module的py代码中加入 print(__name__),通过执行可以看出当module.py文件自身作为main主脚本执行时,__name__ ="main", 当作为module导入给其他脚本时,__name__= module_Name.

if __name__ =="__main__"
	statements

py脚本的执行机制:无论是import引用,还是python a.py方式,都会从脚本第一行开始向下执行完,但只有当python a.py的主调用方式时,会执行 if __name__ =="__main__" .

*注意:因此如果脚本中有函数调用或操作数据,import时会执行到,但你并不知道,这种调试也很难发现,很隐蔽难以定位,这也是Python编程规范要避免的。

提取公共库module模块

如果很多函数经常用到的话,可以把他们封装到一个py文件中,然后通过调用模块的方式,导入这些函数。当模块文件很多,或者几个模块功能类似,就可以用包package来组织代码。

导入的时候 import 包名.模块名
import导入的3种常用方式:
import moduleName
import moduleName as nickName
from moduleName import funcName    //此种import方式,func可以直接使用无需moduleName.func()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章