前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 中下划线的 6 个作用

Python 中下划线的 6 个作用

作者头像
somenzz
发布2021-12-21 18:18:16
3870
发布2021-12-21 18:18:16
举报
文章被收录于专栏:Python七号Python七号

初学者看到 Python 中的下划线 _ 时可能会有些懵圈,不知道这个到底是干什么用的,今天就来盘点一下 Python 中的下划线有哪些用处。以后看到下划线时就可以对号入座了。

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

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

代码语言:javascript
复制
>>> 4 + 3
7
>>> _
7
>>> _ + 2
9
>>> a = 10
>>> _
9
2、代码中一个独立的下划线,表示这个变量不重要

一个独立的下划线,它也是一个变量名,只不过它比较特殊,当你使用下划线作为变量名时,就代表你告诉大家,这个变量不重要,仅仅占个位置,可以忽略,后面不会再使用它。

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

代码语言:javascript
复制
for i, _ in [(1, 2), (3, 4)]:
    print(i)

上面的代码表示我们只需要列表内部元组的第一个,第二个其实赋值给了下划线,虽然后面你可以通过下滑线来取到值,但是强烈建议你不要这么做,这违反了约定。

3、类的内部,双下划线作为变量名或函数名的开头,表示私有

私有变量或函数,只能在类的内部来使用,不可在外部访问或更改,比如,在 module_b.py 中有一个类 A,类 A 有一个双下划线开头的变量名:

代码语言:javascript
复制

class A:
    __private_var = 1000

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

当我们在另一个文件中引用 A 时,就无法访问到私有变量:

代码语言:javascript
复制

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

代码语言:javascript
复制
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__' 等等。

具体可以阅读如何写出令人惊叹的Python类

5、作为变量名中间的一部分

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

6、作为数字中间的一部分,更易读
代码语言:javascript
复制
>>> 10_000_000
10000000
>>> 1_280_500_000 == 1280500000
True

最后的话

本文梳理了下划线在 Python 中的 6 类用法,感谢支持。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python七号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、用在 Python 解释器,表示上一次的执行结果
  • 2、代码中一个独立的下划线,表示这个变量不重要
  • 3、类的内部,双下划线作为变量名或函数名的开头,表示私有
  • 4、双下划线开头和结尾的方法,是魔术方法
  • 5、作为变量名中间的一部分
  • 6、作为数字中间的一部分,更易读
  • 最后的话
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档