zoukankan      html  css  js  c++  java
  • Python main()函数解析

    __main__ — Top-level script environment

    '__main__'是顶级代码执行的作用域的名字。

    当一个模块从标准input, 一个脚本文件,或一个交互命令read读入时,它的__name__等于'__main__'。

    程序入口

    C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口。

    #include <stdio.h>
     
    int main()
    {
        /* 我的第一个 C 程序 */
        printf("Hello, World! 
    ");
     
        return 0;
    }

    而 Python 则有不同,它属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。

    一个 Python 源码文件除了可以被直接运行外,还可以作为模块(也就是库)被导入。不管是导入还是直接运行,最顶层的代码都会被运行(Python 用缩进来区分代码层次)。而实际上在导入的时候,有一部分代码我们是不希望被运行的。

    例如,下面的例子。

    #linshi.py
    PI = 3.14
    
    def main():
        print ("PI:", PI)
    main()
    #example.py
    from linshi import PI
    
    def calc_round_area(radius):
        return PI * (radius ** 2)
    
    def main():
        print ("round area: ", calc_round_area(2))
    
    main()

    执行python3 example.py后在输出:

    PI: 3.14
    round area:  12.56

    这是因为linshi.py中有main()这行代码。实际上不希望运行linshi.py中的main函数。修改linshi.py:

    PI = 3.14
    
    def main():
        print ("PI:", PI)
    
    # main() 加上一个判断:
    if __name__ == '__main__':
        main()

    解释:

    example.py从命令行read时,__name__就等于'__main__'。

    linshi.py作为模块导入时,__name__则被赋值为模块自身的名字,即linshi。

    Python -m 参数解析

    https://a7744hsc.github.io/python/2018/05/03/Run-python-script.html

  • 相关阅读:
    AxAssist安装说明
    回调方法
    Export to Excel/Word COMInterface
    Using Timer
    转英文 TotalEng
    设置报表的 条形码 Barcode 字体 生产参数
    Silverlight5.0新特性一览
    Silverlight地理地质信息系统
    微软台湾发布Silverlight的卡通形象MM——藍澤光
    微软Silverlight4与Adobe Flex4打成平手,SL与FLEX技术全面对比
  • 原文地址:https://www.cnblogs.com/chentianwei/p/11912463.html
Copyright © 2011-2022 走看看