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

  • 相关阅读:
    django_开发报错
    SpringBoot 前后端数据参数交互
    消息队列学习笔记(一)
    2021年调用工商二维码退款查询接口
    2021年调用工商二维码退款接口
    2021年调用工商二维码生成接口及回调接口demo
    调用工商生成二维码接口文档的坑
    使用hutool工具类转换时间
    微信模板消息推送
    pom文件 spring-boot-maven-plugin 爆红
  • 原文地址:https://www.cnblogs.com/chentianwei/p/11912463.html
Copyright © 2011-2022 走看看