# hello.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))
test()//测试函数
# test.py
import hello as h
print("32摄氏度=%.2f华氏度" % h.c2f(10))
结果:
而我们的目的是只执行c2f函数,为了实现这一点因此需要用到__name__
属性
在程序运行时,__name__
属性的值是’__main__
’,而作为模块导入的时候,这个值就是该模块的名字了。
因此,就不难理解if__name__=='__main__'
这句代码的意思
# hello.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()
这个代码就确保了只有单独运行 hello.py
时,才会执行 test()
函数。
# test.py
import hello as h
print("32摄氏度=%.2f华氏度" % h.c2f(10))
这是因为__name__
就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__
,通过if
判断这样就可以执行“__main__:
”后面的主函数内容;
假如此模块是被 import 的,则此模块名字为文件名字,通过if
判断这样就会跳过 “__main__:
” 后面的内容。比如说h.__name__
不是’main
’,所以hello模块中的“__main__:
”后面的语句就没有被执行