Python之有妙用的__name__属性

来源:千锋教育
发布时间:2023-11-06 17:00:38
分享

前面说了,py文件分两种:用于执行的程序文件和用于导入的模块文件。当直接使用pythona.py的时候表示a.py是用于执行的程序文件,通过import/from方式导入的py文件是模块文件。

__name__属性用来区分py文件是程序文件还是模块文件:

当文件是程序文件的时候,该属性被设置为__main__

当文件是模块文件的时候(也就是被导入时),该属性被设置为自身模块名

换句话说,__main__表示的是当前执行程序文件的默认模块名,想必学过其他支持包功能的语言的人很容易理解:程序都需要一个入口,入口程序所在的包就是main包,在main包中导入其它包来组织整个程序。python也是如此,只不过它是隐式自动设置的。

对于python来说,因为隐式自动设置,该属性就有了特殊妙用:直接在模块文件中通过if__name__=="__main__"来判断,然后写属于执行程序的代码,如果直接用python执行这个文件,说明这个文件是程序文件,于是会执行属于if代码块的代码,如果是被导入,则是模块文件,if代码块中的代码不会被执行。

显然,这是python中非常方便的单元测试方式。

例如,写一个模块文件,里面包含一个函数,用来求给定序列的最大值和最小值:

defminmax(func,*args):

res=args[0]

forarginargs[1:]:

iffunc(arg,res):

res=arg

returnres

deflessthan(x,y):returnx

defgreatethan(x,y):returnx>y

#测试代码

if__name__=="__main__":

print(minmax(lessthan,3,6,2,1,4,5))

print(minmax(greatethan,3,6,2,1,4,5))

以上内容为大家介绍了Python之有妙用的__name__属性,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。


声明:本站部分稿件版权来源于网络,如有侵犯版权,请及时联系我们。

相关推荐

  • python丰富的内置类型及相关操作 python的内置类型如下:lString:字符串放在单引号、双引号、三引号(多行时)中,从0开始索引,支持n查:find、index、n切片:s[0:2]、s[1:]n连接:“abc”+“ef”=>
  • python强大的标准库 Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理
  • python线程同步(锁) 多线程的优势在于可以同时运行多个任务(至少感觉起来是这样)。但是当线程需要共享数据时,可能存在数据不同步的问题。考虑这样一种情况:一个列表里所有元素都是0,线程"set"从后向前把所有元素改成1,而线
  • python访问对象的属性 以下列出了几个内建方法,可以用来检查或是访问对象的属性。这些方法可以用于任意对象而不仅仅是例子中的Cat实例对象;Python中一切都是对象。cat=Cat('kitty')print
  • python之使用inspect模块 inspect模块提供了一系列函数用于帮助使用自省。下面仅列出较常用的一些函数,想获得全部的函数资料可以查看inspect模块的文档。1.检查对象类型is{module|class|function|
  • Python 枚举 1.枚举的定义首先,定义枚举要导入enum模块。枚举定义用class关键字,继承Enum类。用于定义枚举的class和定义类的class是有区别【下一篇博文继续分享】。示例代码:fromenumimp