Python合集之模块(三)
1.已主程序的形式执行
这里创建一个模块,名称为christmastree,在该段代码中,首先定义一个全局变量,然后创建一个名称为fun_christmastree()的函数,最后在通过print()函数输出一些内容。
printtree="我是一棵松树" def fun_christmastree(): '''功能:一个梦 无返回值 ''' pinetree="挂上彩灯,礼物。。。我变成一颗圣诞树" print(pinetree) #.............# print("下雪了") print("=========开始做梦=======") fun_christmastree() print("========梦醒了==========") pinetree="我身上楼满雪花,"+pinetree+"—_—" print(pinetree)
在与christmastree模块同级目录下,创建一个名称为main.py的文件,在该文件中,导入christmastree模块,在通过print()语句输出模块中全局变量pinetree的值。代码如下:
import christmastree print("全局变量的值为:",christmastree.pinetree)
执行以上的代码,将得到如下的结果:
下雪了 =========开始做梦======= 挂上彩灯、礼物。。。我变成一颗圣诞树 ========梦醒了========== 我身上楼满雪花,我是一颗松树 全局变量的值为:我身上楼满雪花,我是一颗松树
从上面的结果可以看出,导入模块后,不仅输出了全局变量的值,而且模块中原有的测试代码也被执行了,这个结果显然不是我们想要的,那么如何只输出全局变量的值呢?实际上,我们可以在模块中,将原本直接执行的测试代码放在一个if语句中,因此,可以将上面的代码修改为:
printtree="我是一棵松树" def fun_christmastree(): '''功能:一个梦 无返回值 ''' pinetree="挂上彩灯,礼物。。。我变成一颗圣诞树" print(pinetree) #.............# if __name__="__main__": print("下雪了") print("=========开始做梦=======") fun_christmastree() print("========梦醒了==========") pinetree="我身上楼满雪花,"+pinetree+"—_—" print(pinetree)
这样再次执行导入模块的main.py的代码,将只显示以下的内容:
全局变量的值为:我身上楼满雪花,我是一颗松树
注:在每个模块的定义中都包括一个记录模块名称的变量__name__,程序可以检查该变量,以确定他们在那个模块中执行,如果一个模块不是被导入到其他模块中执行,那么他可能在解释器的顶级模块中执行,顶级模块的__name__变量的值为 __main__
花絮:
本期的Python 模块就分享到这里,下期我们将继续分享Python模块的相关知识,感兴趣的朋友可以关注我。
同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。