if __name__ == ‘__main__‘详细解释及实操演示

在Python中,每个模块都有一个内置的变量 name,用于表示当前模块的名称。当一个Python文件被执行时,Python解释器会首先将该文件作为一个模块导入,并执行其中的代码。此时,__name__的值为模块的名称。

if name == ‘main’ 是一个常见的用法,它的意思是:当该模块被直接执行时,该条件成立,执行其下的代码;当该模块被导入时,该条件不成立,其下的代码不会被执行。

这句话可能直接看不是很理解,那么我们通过实际操作来看看。

下面是一些例子:
假设你有一个名为 my_module.py 的Python模块,它包含以下代码:

def foo():
    print("Hello, world!")

print("This is my_module.py")

if __name__ == '__main__':
    foo()

当你在终端中运行 python my_module.py 时,由于该模块被直接执行,if name == ‘main’ 条件成立,foo() 函数会被执行并输出 “Hello, world!”,同时也会输出 “This is my_module.py”。

当你在其他的Python程序中导入 my_module 时,if name == ‘main’ 条件不成立,foo() 函数不会被执行,但是会输出 “This is my_module.py”。

import my_module

my_module


这是因为在导入my_module模块时,Python会将该模块的名称赋值给__name__变量,因此if name == ‘main’语句不会执行。而当我们直接执行my_module.py文件时,name__变量的值为__main,因此if name == ‘main’语句会执行foo()函数。

简单来说在Python中,每个模块都有一个内置的变量__name__,用于表示当前模块的名称。当模块被直接执行时,__name__的值就是字符串’main’,而当模块被导入到其他模块中使用时,__name__的值就是模块的名称(不包含后缀.py)。

因此,在上面的代码中,当我们直接运行my_module.py时,其中的if name == ‘main’:语句会判断当前模块是否为主模块,如果是主模块就会执行下面的代码。而当我们在main.py中导入my_module模块时,if name == ‘main’:判断条件为假,因为此时my_module模块不是主模块,所以其中的代码不会被执行。

总之,这种写法可以让模块既可以独立运行,也可以被其他模块导入使用。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年8月23日
下一篇 2023年8月23日

相关推荐