Python 中 if __name__ == '__main__' 的作用及示例
在 Python 中,每个模块(文件)都有一个名称。当 Python 解释器执行一个文件时,它会给这个文件设置一个特殊的全局变量 'name'。当这个文件作为主程序直接执行时,'name' 的值被设置为 ' 'main' '。而当这个文件被其他模块导入时,'name' 的值被设置为模块的名称。
'if name == 'main':' 是一个条件语句,用于判断当前模块是直接被执行还是被导入。如果当前模块是直接被执行的(即作为主程序运行),那么条件成立,if 语句块中的代码会被执行。如果当前模块是被导入的,那么条件不成立,if 语句块中的代码不会被执行。
下面是一个例子来说明 'if name == 'main':' 的作用:
假设我们有两个文件,一个是 main.py,另一个是 module.py。module.py 是一个包含一些函数的模块,而 main.py 是主程序。
module.py:
def hello():
print('Hello, World!')
def goodbye():
print('Goodbye, World!')
if __name__ == '__main__':
print('This is module.py being run directly.')
hello()
main.py:
import module
print('This is main.py.')
module.hello()
module.goodbye()
当我们运行 main.py 时,输出结果为:
This is main.py.
Hello, World!
Goodbye, World!
解释如下:
- main.py 导入了 module.py 模块。
- 在 main.py 中,当执行 module.hello() 时,module.py 中的 hello() 函数被调用,输出 'Hello, World!'。
- 在 main.py 中,当执行 module.goodbye() 时,module.py 中的 goodbye() 函数被调用,输出 'Goodbye, World!'。
- 在 module.py 中,'if name == 'main':' 条件不成立,因为 module.py 是被导入的,所以 if 语句块中的代码不会被执行。
这样设计的好处是,如果我们只想运行 module.py 中的特定代码,可以直接运行 module.py 文件。而如果我们想运行 main.py 中的代码,可以直接运行 main.py 文件。这样可以提高代码的可重用性和模块化程度。
原文地址: https://www.cveoy.top/t/topic/bQ16 著作权归作者所有。请勿转载和采集!