乐趣区

关于python:Python-中下划线的-6-个作用

初学者看到 Python 中的下划线 _ 时可能会有些懵圈,不晓得这个到底是干什么用的,明天就来盘点一下 Python 中的下划线有哪些用途。当前看到下划线时就能够对号入座了。

1、用在 Python 解释器,示意上一次的执行后果

即便不把 Python 用于编程,也能够把它用作智能计算器,下划线保留上次的计算结果,在计算时相当不便:

>>> 4 + 3
7
>>> _
7
>>> _ + 2
9
>>> a = 10
>>> _
9

2、代码中一个独立的下划线,示意这个变量不重要

一个独立的下划线,它也是一个变量名,只不过它比拟非凡,当你应用下划线作为变量名时,就代表你通知大家,这个变量不重要,仅仅占个地位,能够疏忽,前面不会再应用它。

当然了,这只是一种约定俗成,你要是不恪守也是能够的,毕竟在前面你还能够通过下划线来获取这个变量的值。

for i, _ in [(1, 2), (3, 4)]:
    print(i)

下面的代码示意咱们只须要列表外部元组的第一个,第二个其实赋值给了下划线,尽管前面你能够通过下滑线来取到值,然而强烈建议你不要这么做,这违反了约定。

3、类的外部,双下划线作为变量名或函数名的结尾,示意公有

公有变量或函数,只能在类的外部来应用,不可在内部拜访或更改,比方,在 module_b.py 中有一个类 A,类 A 有一个双下划线结尾的变量名:

class A:
    __private_var = 1000

    def __init__(self) -> None:
        self.__private_var2 = 2000
        self.var3 = 3000

当咱们在另一个文件中援用 A 时,就无法访问到公有变量:

import module_b

if __name__ == '__main__':
    a = module_b.A()
    print(a.__private_var)

这里会报错

当然了,如果你肯定要拜访,也是能够的,只需在公有变量前加个 _类名 ,比方下面的代码中改为 print(a._A__private_var) 就能够正确打印 1000。

不能间接拜访 __private_var 是因为 Python 解释器对外把 __private_var 变量改成了 _A__private_var

print(dir(a))
#['_A__private_var', '_A__private_var2', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'var3']

有些时候,你会看到以一个下划线结尾的实例变量名,比方 _name,这样的实例变量内部是能够拜访的,然而,依照约定俗成的规定,当你看到这样的变量时,意思就是,“尽管我能够被拜访,然而,请把我视为公有变量,不要随便拜访”。

Python 自身没有任何机制阻止你干坏事,所有全靠盲目

4、双下划线结尾和结尾的办法,是魔术办法

比方常见的 ‘__init__‘,‘__dict__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘ 等等。

5、作为变量名两头的一部分

相比驼峰命名,这叫做蛇形命名,比方 user_name。

6、作为数字两头的一部分,更易读

>>> 10_000_000
10000000
>>> 1_280_500_000 == 1280500000
True

最初的话

本文梳理了下划线在 Python 中的 6 类用法,如果有播种还请点赞、关注,感激反对。

退出移动版