• python中if __name__ == '__main__'是什么?


    __name____main__认识

    作用:一般用于测试程序的功能,if __name__ == '__main__':下面的代码会被执行,但当前.py文件被当做模块导入的时候,main下面的代码就不会被执行,防止测试代码被执行。

    语法:

    if __name__ == '__main__':
                要执行的测试模块
     
    

    if __name__ == "__main__":可以看成是python程序的入口,就像java中的main()方法,但不完全正确。

    .py文件中,除了def后面定义函数外的代码都会被认为是“main”方法中的内容,从而从上而下执行。

    如果只是写一个print('hello world'),那这一句话就是一个程序,因此不需要所谓的"main"方法入口,直接运行测试就可以。

    但如果是测试函数功能,我们就需要在.py文件中写上if__name__=="__main__",再调用函数,当然,如果你不写的话,也没关系,也可以直接将函数加括号进行调用。

    我们写的目的就是防止后面会把当前.py文件当做模块导入其他.py文件中,从而误触发测试代码。

    __name__的变化

    1、__name__其实就是一个内置属性,在自己的py文件中被执行,__name__属性的值就是__main__

    示例代码:

    # test.py
    print("first")
     
     
    def say_hello():
        print(__name__)
     
     
    if __name__ == '__main__':
        print(__name__)
        say_hello()
    

    运行结果:

    first
    __main__
    __main__
    

    2、将test.py文件导入其他文件中,__name__就会变为当前模块的名字,例如:__test__

    实例代码:

    # work.py
     
    import test  # 导入test
     
     
    if __name__ == '__main__':
        test.say_hello()
        print(__name__)
    

    执行结果:

    first
    test
    __main__
    

    总结:python不像JAVA中一样拥有main()方法的特点。所谓的入口其实也就是一个if条件语句,判断成功就执行下面if中的代码。JAVA等其他语言中会有特定的内置函数去识别main()方法入口,在main()方法中从上而下执行。

  • 相关阅读:
    常用安卓开发技巧汇总
    安卓开发30:AsyncTask的用法
    JBoss AS7 快速配置
    抓包 把笔记本改造成无线路由器 —— 手机抓包牛刀小试
    Android系统手机端抓包方法
    ApkTool反编译apk,去除广告或者汉化后重新打包apk,并签名
    Android中如何像 360 一样优雅的杀死后台Service而不启动
    android service 的各种用法(IPC、AIDL)
    Android shell 下 busybox,clear,tcpdump、、众多命令的移植
    Servlet3.0中Servlet的使用
  • 原文地址:https://www.cnblogs.com/cnhyk/p/12410958.html
Copyright © 2020-2023  润新知