Python模块与包
2021-01-15 19:15
阅读:634
一个Python文件有两种用途,一种被当主程序/脚本执行,另一种被当模块导入,为了区别同一个文件的不同用途,每个py文件都内置了__name__变量,该变量在py文件被当做脚本执行时赋值为“__main__”,在py文件被当做模块导入时赋值为模块名。
作为模块foo.py的开发者,可以在文件末尾基于__name__在不同应用场景下值的不同来控制文件执行不同的逻辑
#foo.py ... if __name__ == ‘__main__‘: foo.py被当做脚本执行时运行的代码 else: foo.py被当做模块导入时运行的代码
通常我们会在if的子代码块中编写针对模块功能的测试代码,这样foo.py在被当做脚本运行时,就会执行测试代码,而被当做模块导入时则不用执行测试代码。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # 这是一个模块 print("模块foo --->") x = 1 def get(): print(x) def change(): global x x = 0 if __name__ == ‘__main__‘: # Ps:由于导入模块时会先执行一遍模块文件。故可以采用此种方式做功能测试 get() else: print("不运行get..") """ 执行结果如下: 1.当将foo.py当做主程序运行时,会 print("模块foo --->") 后 执行get()方法。 2.当将foo.py当做模块进行导入时,会 print("模块foo --->") 后 print("不运行get..") 。 """
上一篇:对碰奖算法优化
评论
亲,登录后才可以留言!