暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python下划线的用法总结

信为一切功德母 2019-11-14
275

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)

0 1
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__
也是可以调用的,






2




文章转载自信为一切功德母,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论