首页 > 编程语言 > 详细

Python中下划线的5种含义

时间:2021-04-12 12:41:36      阅读:13      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

1. 单前导下划线 _var

下划线前缀的含义是告知其他程序员:以单个下划线开头的变量或方法仅供内部使用。 该约定在PEP 8中有定义。

这不是Python强制规定的。

class Test:
   def __init__(self):
       self.foo = 11
       self._bar = 23

>>> t = Test()
>>> t.foo
11
>>> t._bar#其性质和功能与常规变量一样,只是一种约定
23

2. 单末尾下划线 var_

有时候,一个变量的最合适的名称已经被一个关键字所占用。 因此,像class或def这样的名称不能用作Python中的变量名称。 在这种情况下,你可以附加一个下划线来解决命名冲突:

>>> def make_object(name, class):
SyntaxError: "invalid syntax"

>>> def make_object(name, class_):
...    pass

总之,单个末尾下划线(后缀)是一个约定,用来避免与Python关键字产生命名冲突。 PEP 8解释了这个约定。

3. 双前导下划线 __var

定义私有属性,双下划线前缀命名的属性只能在本类中使用,不能被继承也无法被实例对象调用

class ExtendedTest(Test):
   def __init__(self):
       super().__init__()
       self.foo = ‘overridden‘
       self._bar = ‘overridden‘
       self.__baz = ‘overridden‘

>>> t2 = ExtendedTest()
>>> t2.foo
‘overridden‘
>>> t2._bar
‘overridden‘
>>> t2.__baz
AttributeError: "‘ExtendedTest‘ object has no attribute ‘__baz‘"

4. 双前导和双末尾下划线 _var_

Python保留了有双前导和双末尾下划线的名称,用于特殊用途。 这样的例子有,__init__对象构造函数,或__call__ --- 它使得一个对象可以被调用。

class PrefixPostfixTest:
   def __init__(self):
       self.__bam__ = 42

>>> PrefixPostfixTest().__bam__
42

5.单下划线 _

按照习惯,有时候单个独立下划线是用作一个名字,来表示某个变量是临时的或无关紧要的。

>>> for _ in range(32):
...    print(‘Hello, World.‘)

Python中下划线的5种含义

原文:https://www.cnblogs.com/zukang/p/14646609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!