版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhdl11/article/details/38710451
很多的编程思想都是想尽可能的做到代码重用,通过之前的学习,了解到在Python我们可以通过写函数来实现代码重用,但是如果我想重用多段函数同时需要重用多个变量要怎么办呢,对,通过模块,通过封装模块来实现
模块是什么呢,简单说就是一个以.py为扩展名的文件,是包含了我们所定义的函数及变量的文件。
先通过一个例子来直观的了解一下:
模块程序:mymodule.py
__author__ = 'zWX231671'
# Filename mymodule
def show():
print('show me the meaning')
version = '1.0'
# print('import by other program')
调用程序:
mymodule2.py
__author__ = 'zWX231671'
import mymodule
# 引用其他模块
mymodule.show()
print('Version: ', mymodule.version)
执行mymodule2.py结果如下:
你或许已经发现在mymodule.py中,最后有一行代码是注释掉的,如果打开,会是什么结果呢?
是这样的:
刚刚打开的那段注释代码,首先在控制台打印了一段话,是早于我们的函数调用及变量打印的,但是我们在 mymodule2.py中,我们并未主动调用打印方法,原来是一个模块在首次被引入时,其主模块会主动执行。
那么,如果我们想实现在引入程序时不运行其主块,只有当其自身运行时才运行主块的效果,需要怎么办呢? 这是可以通过使用 __name__ 属性来实现的
继续修改mymodule.py程序,将其修改为:
__author__ = 'zWX231671'
# Filename mymodule
def show():
print('show me the meaning')
version = '1.0'
if __name__ == '__main__':
print('this code is running by itself')
else:
print('import by other program')
单独运行mymodule.py会打印出:
this code is running by itself
运行mymodule.py结果是:
import by other program
show me the meaning
Version: 1.0
写一段代码测试一下,mymodule3.py
__author__ = 'zWX231671'
# 可以import模块中的方法和常量,其实也都是变量。
# 不推荐使用这种方法,命名空间不明确,而且容易造成变量的混淆
from mymodule import show, version
show()
print('Version is ', version)
结果为: