在 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!

解释如下:

  1. main.py 导入了 module.py 模块。
  2. 在 main.py 中,当执行 module.hello() 时,module.py 中的 hello() 函数被调用,输出 'Hello, World!'。
  3. 在 main.py 中,当执行 module.goodbye() 时,module.py 中的 goodbye() 函数被调用,输出 'Goodbye, World!'。
  4. 在 module.py 中,'if name == 'main':' 条件不成立,因为 module.py 是被导入的,所以 if 语句块中的代码不会被执行。

这样设计的好处是,如果我们只想运行 module.py 中的特定代码,可以直接运行 module.py 文件。而如果我们想运行 main.py 中的代码,可以直接运行 main.py 文件。这样可以提高代码的可重用性和模块化程度。

Python 中 if __name__ == '__main__' 的作用及示例

原文地址: https://www.cveoy.top/t/topic/bQ16 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录