• if __name__ == "__main__"


    写作背景:
    看着别人的代码,if __name__ == "__main__"。Okay,本人宣告卡机~~

    百度后,好像知道了点什么。
    其他编译语言经常出现def main(),然后写一大串代码,表示它把想要干的事情定义到了main()函数,以后想干啥,直接写个main(),就ok了。这些语言的运行,需要main()函数作为程序的入口,来实现程序的运行。
    然而,Python 这个脚本语言,不需要像编译型语言那样:先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口。简单点,就是,如果你看到if __name__ == “__main__“,就把它当作是 Python 模拟的程序入口即可。Python 本身并没有规定这么写,这只是一种编码习惯。(其他语言比较常用)
    一般来说,一个 Python 源码文件可以被直接运行(假设,我手上有个aaa.py文件,在 CMD里调用,直接打python aaa.py即可调用),也可以作为模块(也就是库)被导入。看你的需求。
    下面分别介绍两种情况:

    1.plan.py(可执行情况)

    print("Plan A")
    
    if __name__ == "__main__":
        print("Plan B")
    

    这时候,我们用CMD直接调用这个文件

    看到Plan A 和 Plan B 都成功执行。(说明:如果.py文件被直接调用,内置变量__name__等于当前文件名(包含后缀.py,这里就是plan.py),"__main__"等于当前执行文件的名称(包含后缀.py,这里就是plan.py)。
    Consequently, 文件被直接调用时,__name__ = "__main__"成立,执行后面的语句。

    2.imported_plan.py(不可执行情况)

    import plan
    

    这里直接拿plan来用,看当plan.py被调用时,探究__name__"__main__"是否一样

    Obviously, 自从被import之后,这一切都变了。__name__变成了模块名称(不包含后缀.py,即plan。)而我们的"__main__"还是那个纯真的plan.py,所以__name__"__main__"从此形同陌路啦!
    Consequently, 文件被import来用时,__name__ = "__main__"不成立,不会执行后面的语言。

    3.conclusion:

    总之,记住:

    • 如果.py被直接调用, if __name__ == ”__main__“为True,后面的语句执行。
    • 如果.py被其他人import去用,那么if __name__ == “__main__” 为False,后面的语句是不可能执行的,不可能的,不可能的。记住了吗?That's all.

    对main()还是不太认识,之后要补充一下。

    参考文章:http://www.dengfeilong.com/post/60.html

    https://blog.csdn.net/yjk13703623757/article/details/77918633

  • 相关阅读:
    linux指令大全
    strcpy.strcmp.strlen.strcat函数的实现
    推箱子
    头文件string.h里的函数
    SVN 版本控制工具
    Nodejs 学习
    JavaScript基础知识复习
    CSS3 学习小结
    JSP中 JSTL
    JSP中的EL语言
  • 原文地址:https://www.cnblogs.com/wyy1480/p/10663416.html
Copyright © 2020-2023  润新知