鱼C论坛

 找回密码
 立即注册
查看: 119|回复: 3

[技术交流] 关于 __name__== '__main__'的问题

[复制链接]
发表于 2024-11-3 00:56:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
现有如下一段代码:文件路径为: 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()  ?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-11-3 09:14:57 | 显示全部楼层
if __name__ == '__main__':
    test()
这行代码的意思是:如果当前脚本是作为主程序运行(而不是被其他脚本导入),那么执行 test() 函数。当你通过 import TemperatureConversion as tc 导入模块时,TemperatureConversion.py 并不是作为主程序运行,而是作为模块导入到其他脚本中,所以 test() 函数不会被执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是这样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 19:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表