最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python里if __name__ =="main"是什么

    正文概述    2020-04-27   218

    Python里if __name__ =="main"是什么

    在阅读别人写的自定义模块时,经常会看到有如下这行判断语句:

    if __name__ == '__main__':

    这行代码的作用是什么呢?下面讲解以下它的作用。

    一般情况下,当我们写完自定义的模块之后,都会写一个测试代码,检验一些模块中各个功能是否能够成功运行。例如,创建一个 candf.py 文件,并编写如下代码:

    '''
    摄氏度和华氏度的相互转换模块
    '''
    def c2f(cel):
        fah = cel * 1.8 + 32
        return fah
    def f2c(fah):
        cel = (fah - 32) / 1.8
        return cel
    def test():
        print("测试数据:0 摄氏度 = %.2f 华氏度" % c2f(0))
        print("测试数据:0 华氏度 = %.2f 摄氏度" % f2c(0))
    test()

    单独运行此模块文件,可以看到如下运行结果:

    测试数据:0 摄氏度 = 32.00 华氏度
    测试数据:0 华氏度 = -17.78 摄氏度

    在 candf.py 模块文件的基础上,在同目录下再创建一个 demo.py 文件,并编写如下代码:

    import candf
    print("32 摄氏度 = %.2f 华氏度" % candf.c2f(32))
    print("99 华氏度 = %.2f 摄氏度" % candf.f2c(99))

    运行 demo.py 文件,其运行结果如下所示:

    测试数据:0 摄氏度 = 32.00 华氏度
    测试数据:0 华氏度 = -17.78 摄氏度
    32 摄氏度 = 89.60 华氏度
    99 华氏度 = 37.22 摄氏度

    可以看到,Python解释器将模块(candf.py)中的测试代码也一块儿运行了,这并不是我们想要的结果。想要避免这种情况的关键在于,要让 Python 解释器知道,当前要运行的程度代码,是模块文件本身,还是导入模块的其它程序。更多学习内容,请点击Python学习网。

    为了实现这一点,就需要使用 Python 内置的系统变量 __name__,它用于标识所在模块的模块名。例如,在 demo.py 程序文件中,添加如下代码:

    print(__name__)
    print(candf.__name__)
    其运行结果为:
    __main__
    candf

    可以看到,当前运行的程序,其 __name__ 的值为 __main__,而导入到当前程序中的模块,其 __name__ 值为自己的模块名。因此,if __name__ == '__main__': 的作用是确保只有单独运行该模块时,此表达式才成立,才可以进入此判断语法,执行其中的测试代码;反之,如果只是作为模块导入到其他程序文件中,则此表达式将不成立,运行其它程序时,也就不会执行该判断语句中的测试代码。


    起源地下载网 » Python里if __name__ =="main"是什么

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元