python中下划线最常见的是,作为字符用于命名变量,但是不同于字符,它有一些特殊的用法
python中下划线主要用途如下
表示最近输出结果
表示没用的变量
表示私有变量
前后双下划线__类的魔术方法
在python交互模式下,_
可以表示一个特殊变量,指向最近输出的结果
注意:如果_
变量被显式赋值了,则_
就固定表示这个值,不会动态地表示最近输出的结果
1.表示最近输出结果
在python交互模式下,_
可以表示一个特殊变量,指向最近输出的结果
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> a=5
>>> a
5
>>> _
5
>>> _-10
-5
>>> b=_
>>> b
-5
>>>
>>> _=20
>>> _
20
>>>
注意:如果_
变量被显式赋值了,则_
就固定表示这个值,不会动态地表示最近输出的结果
2.表示没用的变量
两个元素的循环,如果只需要用一个元素,另一个元素最好用_
表示,说明这个元素不会被使用,增加代码可读性a,b
两个元素都使用是这样
>>> mylist=[1,2,3,4,5,6]
>>> for a,b in enumerate(mylist):
print(a,b)
1 2
2 3
3 4
4 5
5 6
如果我们只要用索引
a,而
b不用
>>> mylist=[1,2,3,4,5,6]
>>> for a,b in enumerate(mylist):
... print(a)
...
0
1
2
3
4
5
但是
b不使用最好不要命名为
b用
_代替
>>> mylist=[1,2,3,4,5,6]
>>> for a,_ in enumerate(mylist):
... print(a,b)
...
0
1
2
3
4
5
3.表示私有变量
这里是
_作为变量名第一个字符出现,表示私有变量
>>> class Cat:
... def _walk(self):
... print('i am walking')
... def __sleep(self):
... print('i am sleeping')
... def run(self):
... self._walk()
... print('i am running')
... self.__sleep()
>>> mycat= Cat()
>>> mycat.run()
i am walking
i am running
i am sleeping
>>> mycat._walk()
i am walking
>>> a.__sleep()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Cat' object has no attribute '__sleep
在类中带有
_或者
__前缀的函数(属性也是)是私有的,最好只在类中其他函数里面调用,不要让实例直接调用。
_与
__的差别在于,
_前缀的最好不要调用,而
__前缀的则不能调用。
4.前后双下划线————类的魔术方法
定义类时,一些带有双下划线开头且结尾的方法是特殊的,它们可以用于实现特殊的功能
>>> class Myname:
... def __init__(self,name,age):
... self.name=name
... self.age=age
... def __len__(self):
... return self.age
...
>>> zhangsan=Myname('zhangsan',10)
>>> zhangsan.name
'zhangsan'
>>> zhangsan.age
10
>>> len(zhangsan)
10
>>> zhangsan.__dict__
{'name': 'zhangsan', 'age': 10}
>>>
类里定义的
__init__和
__len__都是魔术方法,这些名称都是特殊的,前者专门用于定义类的属性,而定义后者则指定了
len函数作用于这个对象会返回什么样的结果,对字符串使用
len会返回字符数量就是因为字符串这个类里定义了
__len__。另外,还有一些没有定义的变量如
__dict__也是可以调用的,
文章转载自信为一切功德母,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




