- 实现方式:
- 在Python中,
if __name__ == '__main__':
代码块起着关键作用。当Python解释器读取一个源文件时,它会定义一些特殊变量。其中 __name__
变量,若该文件是作为主程序直接运行,__name__
的值为 '__main__'
;若该文件是被其他模块导入,__name__
的值为模块名。
- 对于既可以被导入又可以独立运行的模块,我们可以将模块独立运行时执行的代码放在
if __name__ == '__main__':
代码块中。这样,当模块被导入时,这部分代码不会执行;只有当模块作为主程序直接运行时,这部分代码才会执行。
- 举例说明:
- 假设有两个模块
module1.py
和 module2.py
。
module1.py
代码如下:
def add_numbers(a, b):
return a + b
if __name__ == '__main__':
result = add_numbers(3, 5)
print(f"独立运行结果: {result}")
import module1
def multiply_numbers(a, b):
return a * b
if __name__ == '__main__':
sum_result = module1.add_numbers(2, 4)
multiply_result = multiply_numbers(2, 4)
print(f"通过导入module1并协作运行,加法结果: {sum_result},乘法结果: {multiply_result}")
- 差异分析:
- 独立运行时:
- 当运行
module1.py
时,if __name__ == '__main__':
代码块中的代码会执行,计算并打印 add_numbers(3, 5)
的结果。
- 当运行
module2.py
时,if __name__ == '__main__':
代码块中的代码会执行,它导入 module1
并调用 add_numbers
函数,同时执行自身的 multiply_numbers
函数,并打印两个函数的结果。
- 作为模块导入时:
- 当
module2.py
导入 module1.py
时,module1.py
中的 if __name__ == '__main__':
代码块不会执行,module2.py
可以正常使用 module1
中的 add_numbers
函数,实现模块间的协作。例如在 module2.py
中调用 module1.add_numbers(2, 4)
,不会执行 module1.py
中独立运行时打印 独立运行结果
的那部分代码。