python 下划线的作用

 

下划线(_)在python中的作用

下划线(_)在python中有4种使用场景

在交互式解释器中保存最后一个表达式的值

指向被忽略的值

字面上分割数字

赋予属性和方法特性含义

接下来,我会逐一介绍这4个作用

1. 在交互式解释器中保存最后一个表达式的值

>>> a = 5

>>> a*3

15

>>> _ * 2

30

>>>

在python交互式解释器中,_ 会保存最后一个表达式的值,下一次你想使用最后一个表达式的值时,可以直接使用下划线_ 来表示。

2. 指向被忽略的值

当我们接收函数的多个返回值时,其中某一个是我们不需要的,为了这个不需要的返回值,起一个变量名实在麻烦,这时候,你就可以用下划线来处理这种情况

def func():

"""

返回姓名,年龄,身高,体重

:return:

"""

return 'polly', 19, 165, 50

name, age, height, _ = func()

print(name, age, height)

体重这个返回值,后面的代码不会使用,没必要为它想一个变量名进行存储。

3. 字面上分割数字

这是python3.6以后新增的一个特性,在书写很大的int类型数值(支持多种进制)是时,可以在字面上将数值分割

dec_base = 134_000_000

bin_base = 0b_1101_0001

hex_base = 0x_1234_ab12

print(dec_base)

print(bin_base)

print(hex_base)

下划线只是在字面意义上对数值进行了分割,以便于更容易辨识数值的大小,大部分IDE还不支持这个特性,在pycharm里编写这段代码,会被识别为错误语法并提示,但实际运行不会报错。

4. 赋予属性和方法特性含义

4.1 单下划线开头

单下划线用来定义私有的变量,函数,方法,类,一旦使用的单下划线开头做定义,在import * 这种引入模式中就不会被引入。

def _get_name():

pass

这种私有化声明并不是严格的,它只是作为一种约定而存在,你仍然可以强行引入这些被定义为私有的对象,如果一个类的某个方法是以单下划线开头的,你仍然可以直接使用该方法,像pycharm这样的编辑器,会提示你这样做不合理,但不会禁止你

4.2 单下划线结尾

单下划线结尾的情况,并不多见,它主要是为了避免和python中的关键字冲突,比如你在定义一个函数时,其中一个参数的含义是类型,那么你使用type来做参数的名字是比较贴切的,但type是保留关键字,不能随意使用,这时就可以这样定义

def func(type_):

pass

4.3 双下划线开头

这种用法通常在定义类的方法时使用,它是一种语法,约定的属性相对弱一些。这种用法可以避免类与类之间的方法名称冲突,它告诉编辑器和解释器要在这个方法前以_ClassName的方式加上类的名字。

对于双下划线定义的类的方法,大家普遍认为它是真正的私有方法,无法直接调用。事实上,你的确可以这样理解并使用,但它仍然不是严格的私有方法,仍有途径可以进行调用

class MyTest:

def __print(self):

print("ok")

t = MyTest()

t._MyTest__print() # 可以调用

t.__print() # 报错

4.4 双下划线开头,双下划线结尾

这种用法用在有特殊功能的变量或方法上,这些变量或方法有特殊的语法属性和功能

__file__ 存储表示当前python脚本的目录地址

当a == b 这种表达式被执行时,__eq__ 被执行

当一个对象被创建以后,__init__就会被执行,用于初始化

转载于:

https://blog.csdn.net/weixin_39593519/article/details/110543085

posted on 2022-04-08 09:40  -G  阅读(244)  评论(0)    收藏  举报

导航