python if main_python 中 if __name__ == '__main__' 的解释

主要解释下python 中 if __name__ == '__main__'的意思

先来看两个简单的示例。

demoa.py 文件

#定义一个全局变量

PI = 3.14

def print_pi():

print 'PI:{}'.format(PI)

def say_hello():

print 'hello world'

say_hello()

demob.py 文件

from demoa import PI

def calc_round_area(radius):

return PI * (radius ** 2)

print calc_round_area(2)

执行demob.py 文件,结果如下:

hello world

12.56

由执行结果可以看到,执行demob.py 文件时,demoa.py 文件中的 say_hello() 函数先执行了。

现在,修改demoa.py 文件为如下内容:

#定义一个全局变量

PI = 3.14

def print_pi():

print 'PI:{}'.format(PI)

def say_hello():

print 'hello world'

if __name__ == '__main__':

say_hello()

再次执行demob.py 文件,结果如下:

12.56

由上述执行结果可以看到,demoa.py 文件中的say_hello() 函数未执行。从上述的例子中,可以看出 if __name__ == '__main__'的作用了。

一个模块A中定义了一个函数a,并在模块A中直接调用了函数a(没有在if __name__ == '__main__' 下调用).

在模块B 中导入模块A, 在执行模块B 的内容时,模块A 中的函数a 会先被调用。

(也就是说,在模块B 中导入模块A 时,会把A 中的代码执行一遍。)

简单说明

简单理解__name__ == '__main__':

__name__是内置变量,可用于表示当前模块的名字。

demoa.py,在demob.py中,它是demoa(__name__ == 'demoa');在demob自己眼中,它是它自己(__name__ == '__main__')。

demob.py 文件中

import demoa

def calc_round_area(radius):

return demoa.PI * (radius ** 2)

print calc_round_area(2)

print __name__ # __main__

print demoa.__name__ # demoa

if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值