if __name__ == “__main__“: 理解

if __name__ == "__main__": 是 Python 中常用的一种条件判断语句,主要作用是在当前模块作为程序入口时执行一些特定的代码,而在被其它模块引入时不执行这些特定的代码

具体来说,当一个 Python 模块被导入时,Python 解释器会将该模块的文件名存储在内置变量 __name__ 中。如果该模块是主程序入口,则 __name__ 的值为字符串 "__main__",否则 __name__ 的值为该模块的文件名。

因此,当我们使用 if __name__ == "__main__": 进行条件判断时,只有当当前模块作为主程序入口时,才会执行 if 语句块内的代码。

这个语句的作用可以有以下几个方面:

  1. 模块测试:当我们新写一个模块时,可以在 if __name__ == "__main__": 语句块中编写测试代码,用于测试该模块的功能是否正确。

  2. 防止模块被导入时执行不必要的代码:有些模块在被导入时会自动运行一些代码,如果我们不希望这些代码在被导入时执行,可以把这些代码放到 if __name__ == "__main__": 语句块中。

  3. 方便调试: 在调试程序时,有时需要单独运行某个模块,此时将测试代码放在 if __name__ == "__main__": 语句块中可以方便地运行该模块。

综上所述,if __name__ == "__main__": 是一个常见的用法,可以帮助我们实现模块的测试、防止无用代码的执行和方便调试等。


1、对于存在if __name__ == "__main__":时候的代码执行顺序问题:

执行顺序是自上而下,不会先执行“__name__ == "__main__"”

# 执行顺序是自上而下,不会先执行“__name__ == "__main__"”

print("1、首先执行的位置")

def test_fun():
    print("我不会自己执行")

test_fun()

# 在当前模块作为程序入口时执行一些特定的代码,而在被其它模块引入时不执行这些特定的代码
def main():
    print("3、最后执行的位置")


if __name__ == "__main__":
    print("2、再次执行的位置")
    main()

 输出为:

扫描二维码关注公众号,回复: 14955510 查看本文章

1、首先执行的位置
我不会自己执行
2、再次执行的位置
3、最后执行的位置

2、为什么使用if __name__ == "__main__":

test_main.py文件:

# 执行顺序是自上而下,不会先执行“__name__ == "__main__"”

print("1、首先执行的位置")

def test_fun():
    print("我不会自己执行")

test_fun()

# 在当前模块作为程序入口时执行一些特定的代码,而在被其它模块引入时不执行这些特定的代码
def main():
    print("3、最后执行的位置")


if __name__ == "__main__":
    print("2、再次执行的位置")
    main()

other.py文件:

from test_main import test_fun

import test_main

 无论上面哪种调用test_main.py文件,都会执行下面的代码:

print("1、首先执行的位置")

def test_fun():
    print("我不会自己执行")

test_fun()

结果就是输出:

1、首先执行的位置
我不会自己执行

import该模块的时候就执行了在test_main.py文件中执行的函数“test_fun()”【不会执行只是定义def()而未调用的函数】,但是没有执行"main()",说明了if __name__ == "__main__"的作用:在当前模块作为程序入口时执行一些特定的代码,而在被其它模块引入时不执行这些特定的代码

猜你喜欢

转载自blog.csdn.net/weixin_43135178/article/details/130482007