python3有什么用_Python3中__name__有什么用。

0、__name__是什么

Python 为模块、类、函数等自动声明了一个__name__属性(变量),用于标识模块、类、函数等的名称。对于类和函数而言,__name__的值总是与类和函数的名称一致。

而对于模块,__name__会因为模块的加载方式的不同而不同,当一个文件被直接运行时,__name__的值就是__main__;而当文件被import,即被当模块使用时,__name__的值则是模块的路径,在我们的例子中,值与 import后面的内容相同。

为了展示__name__的内容,我们直接来看一个例子。程序的目录结构如下:测序程序的目录结果

这个例子中,a.py是程序的入口,也就是通过运算python3 a.py来启动程序。a.py中引用了b.py, c.d.py。各个文件的代码如下:

# a.py

import b

import c.d

def fa(): pass

print("name of a.py:", __name__)

if __name__ == "__main__":

print("__main__ print from a.py")

print("name of fa:", fa.__name__)

print("name of class B:", b.B.__name__)

print("name of class D:", c.d.D.__name__)

# b.py

print("name of b.py:", __name__)

class B: pass

if __name__ == "__main__":

print("__main__ print from b.py")

# d.py

print("name of d.py:", __name__)

class D: pass

if __name__ == "__main__":

print("__main__ print from d.py")

程序的运行结果如下:

name of b.py: b

name of d.py: c.d

name of a.py: __main__

__main__ print from a.py

name of fa: fa

name of class B: B

name of class D: D

1、模块的__name__变量怎么用

为了方便表述,我们将if __name__ == “__main__”条件语句下的代码称为main块。

如第0节所展示的,在一个程序中,Python在首次运行import x时,会运行x中的所有代码。当一个python文件在直接运行或者被import使用时,如果行为有所不同,此时__name__就显得非常重要。从上面的例子的运行结果可以看出,只有a.py的main块下面的代码会被运行。

当我们在编写一个模块的时候,一个好的习惯是为每个模块编写一个测试代码,用于展示模块各功能的用法,或者用于测试模块的功能。 测试代码可以在模块直接运行时运行,而当被import时,则不运行。这部分的测试当代码就应该放在main块里。

2、类和函数的__name__变量怎么用

__name__是类和函数的一个信息,即类型的名称。在用于反射的声明,__name__才会有很好的用武之地。如果你学习过Java或者C#,对于反射这个概念应该不陌生。反射本身是一个很大的话题,本文只是抛砖引玉,请各位感兴趣的读者自行搜索学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值