if __name__ == '__main__': 具体怎么用
时间: 2023-10-25 12:17:30 浏览: 78
正确理解Python中if __name__ == '__main__'
在Python中,当一个.py文件被执行时,Python会将这个文件作为一个模块来导入,并执行其中的代码。但是,有时候我们希望在模块被导入时只执行其中的一部分代码,而在模块被直接运行时执行其他部分代码。
这时候,我们可以使用if __name__ == '__main__'语句来判断当前模块是被导入还是被直接运行。具体用法如下:
1. 如果一个.py文件中只有一个if __name__ == '__main__'语句,它的作用是当这个.py文件被直接运行时,if __name__ == '__main__'以下的代码会被执行;当这个.py文件被作为模块导入时,if __name__ == '__main__'以下的代码不会被执行。
例如,如果我们有一个test.py文件,其中的代码如下:
```
def foo():
print("Hello, world!")
if __name__ == '__main__':
foo()
```
当我们直接运行test.py文件时,会输出"Hello, world!",但是如果我们将test.py文件作为模块导入到另一个文件中时,不会输出任何内容。
2. 如果一个.py文件中有多个if __name__ == '__main__'语句,那么每个if __name__ == '__main__'以下的代码块都会被执行。这种情况下,我们可以利用多个if __name__ == '__main__'语句来对模块进行测试。
例如,如果我们有一个math.py文件,其中的代码如下:
```
def add(x, y):
return x + y
def subtract(x, y):
return x - y
if __name__ == '__main__':
print(add(1, 2))
print(subtract(3, 4))
if __name__ == '__test__':
assert add(1, 2) == 3
assert subtract(3, 4) == -1
```
当我们直接运行math.py文件时,会输出3和-1,这是因为第一个if __name__ == '__main__'以下的代码块被执行了。但是如果我们将math.py文件作为模块导入到另一个文件中,并且在另一个文件中设置了__name__为'__test__',那么第二个if __name__ == '__test__'以下的代码块就会被执行,进行模块测试。
阅读全文