Python之有妙用的__name__属性

发布时间:2022-04-12 09:48:00 人气:75 作者:多测师

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

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

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

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

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

Python之有妙用的__name__属性

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

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

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

  def minmax(func,*args):

  res = args[0]

  for arg in args[1:]:

  if func(arg,res):

  res = arg

  return res

  def lessthan(x,y): return x < y

  def greatethan(x,y): return x > 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相关知识,请关注多测师。https://www.e70w.com/xwzx/



返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线