zoukankan      html  css  js  c++  java
  • python中的__name__使用

    释义

    if __name__ == '__main__':这句估计很多和我一样的初学者都是不求甚解。
    这里作一下解释:

    1. __name__是一个变量。前后加了爽下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
    2. Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
    3. import的时候是要执行所import的模块的。
    4. __name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行__mian__:后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过__mian__后面的内容。

    通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等。

    栗子

    1. 如果模块是被导入,__name__的值为模块名字
    2. 如果模块是被直接执行,__name__的值为__main__
    #py1.py
    def test():
      print ('__name__ = ',__name__)
    
    if __name__ == '__main__':
      test()
    
    #py2.py
    import py1
    
    def test():
      print ('__name__ = ',__name__)
    if __name__ == '__main__':
      test()
      print ('py1.py __name__ = ',py1.__name__)
    

    执行结果:

    通过结果可以知道,py2.py直接执行,那么内建变量__name__的值为__main__,否则为模块的名字,通过这个特性可以在if语句里面添加测试代码,可以提高减少BUG,提高程序的健壮性。

    【部分内容来自】

    http://blog.csdn.net/adrianfeng/article/details/5862376

    http://blog.chinaunix.net/uid-25324849-id-3087527.html

  • 相关阅读:
    委托的BeginInvoke和EndInvoke
    HTTP Post
    显示一个托盘
    sql语句
    在C++ 中 如何调用 C# 写的DLL(转载)
    WinForm-MenuStrip
    rsync定时同步和rsync+sersync实时同步
    innobackupex自动备份数据库脚本
    innobackupex备份恢复mysql
    gitlab安装和基本使用
  • 原文地址:https://www.cnblogs.com/jiumo/p/10478840.html
Copyright © 2011-2022 走看看