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模块的相关知识,感兴趣的朋友可以关注我。

同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

posted @ 2021-04-12 21:11  @睦  阅读(89)  评论(0编辑  收藏  举报