模块是程序:
任何python程序都可以作为模块导入;
通过python IDLE执行保存在文件夹中的文件:
编辑一个python文件hello.py,保存在文件夹D:\program files (x86)\python3.5下,然后进行下面操作:
这里是告诉编译器,除了从默认的目录中查找外,还要从D:\program files (x86)\python3.5中查找模块;
生成的.pyc文件是(平台无关的)经过处理(编译)的,已经转换成python能够更加处理的文件,如果再导入相同的模块,导入的是.pyc文件,而不是.py文件;
如果再次导入,就什么也不会发生了:
这些内容只需要定义一次,所以导入多次效果与导入一次是相同的。
如果希望重新导入生效,python2中还有另外一种方法:hello = reload(hello),python3已经去掉了该方法。
模块用于定义:
在模块中定义函数(主要用于代码重用):
#hello.py
def hello():
print ('hello nannan!!')
执行:
模块被用来定义函数,类和其他一些内容,但是,有时候在模块中需要添加一些检查模块本身是否能正常工作的测试代码。
#hello.py
def hello():
print ('hello nannan!!')
#A test
hello()
如果将其作为模块导入,会出现下面的情况:
导入时执行了一遍方法,然后调用时又执行了一遍方法。
可以使用下面的方式解决上面的问题:
#hello.py
def hello():
print ('hello nannan!!')
def test():
hello()
if __name__ == '__main__':test()
然后进行执行:
所以得出:
避免导入时执行内容,需要使用变量__name__;
__name__变量的默认值为'__main__';
而在导入模块时,这个值被赋值为模块名,所以在文件中加入代码:if __name__ == '__main__':test(),在非导入模块时,会执行test()方法,将模块进行导入时,name被赋值为模块名,test()方法测试代码将不被执行。