鬼少 发表于 2024-11-3 00:56:53

关于 __name__== '__main__'的问题

现有如下一段代码:文件路径为: D:/program/python_code/test/TemperatureConversion.py
#TemperatureConversion.py
def c2f(cel):
    fah = cel * 1.8 + 32
    return fah

def f2c(fah):
    cel = (fah-32)/ 1.8
    return cel

def test():
    print('测试,0摄氏度 = %.2f华氏度' % c2f(0))
    print("测试,0华氏度 = %.2f摄氏度" % f2c(0))

if __name__ == '__main__':
    test()

当执行如下程序:

>>import sys as s
>>s.path.append("D:/program/python_code/test/")
>> import TemperatureConversion as tc
>>tc.f2c(109)
>>42.77777777777778

请问当执行tc.f2c(109)时, 为何不执行TemperatureConversion.py文件中 test()?

FishC 发表于 2024-11-3 01:13:25

在Python中,`if __name__ == '__main__':` 这一行的作用是判断当前模块是否是被直接运行的。如果是直接运行的,`__name__` 的值会是 `'__main__'`,因此 `test()` 函数会被执行。

然而,当你通过 `import TemperatureConversion as tc` 导入这个模块时,`__name__` 的值会是模块的名称 `'TemperatureConversion'`,而不是 `'__main__'`。因此,`if __name__ == '__main__':` 下面的代码块不会被执行。

这就是为什么在你导入模块并调用 `tc.f2c(109)` 时,`test()` 函数没有被执行的原因。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

很cool的阳 发表于 2024-11-3 09:14:57

if __name__ == '__main__':
    test()
这行代码的意思是:如果当前脚本是作为主程序运行(而不是被其他脚本导入),那么执行 test() 函数。当你通过 import TemperatureConversion as tc 导入模块时,TemperatureConversion.py 并不是作为主程序运行,而是作为模块导入到其他脚本中,所以 test() 函数不会被执行。

鬼少 发表于 2024-11-3 17:01:47

很cool的阳 发表于 2024-11-3 09:14
if __name__ == '__main__':
    test()
这行代码的意思是:如果当前脚本是作为主程序运行(而不是被其他 ...

是这样的
页: [1]
查看完整版本: 关于 __name__== '__main__'的问题