python中下划线开头的命名_Python 中各种下划线的骚操作:_、_xx、xx_、__xx、__xx__、_classname_...

我们在定义一些变量或者方法的时候,常常会用到下划线,在 Python 中,下划线可是很有用处的哟,比如变量,有些是一个下划线开头的(_xx),有些是两个下划线开头的(__xx),有些是在名称的结尾添加下划线的(xx_),还有一些方法我们常常看到两个下划线开头和结尾的(__xx__) 等等…为什么要这么写呢?它们都代表什么意思?我们以后如何定义好这些名称呢?那么接下来就是: 学习 Python 的正确姿势 fb066e111361eb9d4cb49e997b347ccb.png 1、只有一个下划线(_)是干嘛的呢?在 Python 解释器里面,对单个下划线是有特殊的 “感情” 的,我来给你举个例子:
e12c42ee323deb9cb5cd9c5e9a638415.png
仔细看你会发现,_ 是有值的,这是因为在 Python 解释器里面, _ 会指向你最后一次执行的表达式。这在我们使用 Python 交互的时候常常会用到。除此之外,我们还可以使用单个下划线来格式化变量的值,比如金额:
e0f71c6507f4ddb64c8e2b50de7bafee.png
通过这样的表现,我们能更加易读, Python 也知道我们在表示什么。再者,单个下划线还可以使用在循环语句中:
8450e977df7e2261a6ba73637cb94466.png
2、你常见的 __xx__这种以两个下划线开头和结尾的命名方式,我想应该是你最常见到的了,比如我们之前说的类的初始化方法:
6b4f9be7fd95b7bce70abaae45cd105d.png
其实这些,我们叫它们为 “魔法函数” ,也就是说,它是 Python 内置好了的,我们可以直接拿来使用。所以你应该尽量避免做这样类似的以两个下划线开头和结尾的方式去命名。 3、单个下划线开头的 _xx以单个下划线开头命名的方法或者变量,就是说明它是仅提供内部使用的。举一个例子,我们来创建一个模块(handsomeb.py),然后在里面创建两个方法,一个以单个下划线开头命名,一个不以单个下划线开头命名:
280f9d8b5db522ad041e3860ff99439a.png
接着我们去引用这个模块,分别执行模块中的方法:
bd4651850f641f60ebee6f81bb45b058.png
当我们去执行 my_func() 输出 fxxkpython ,没毛病吧:
b86fbec7f44048f86412670e3b88f16b.png
但是当我们去执行 _my_func() 的时候就不行了:
f4283a57c19e0b73bb3f059d82beac74.png
这时候它告诉我们 _my_func 没有定义,它只能被模块内部使用。 4、单个下划线结尾的 xx_我们知道, Python 有许多关键词,比如 def、return、calss、pass 这些,它们都是有特殊的意义的,所以我们在定义变量或者方法的时候,不可以用它们来命名的,比如这样是错误的:
ebf7690bda5cc7d603bcc3328cbc54dd.png
那么如果我们死都要这样定义名称呢?为了区分,在它们的后面添加一个下划线:
2cdcb268b5564889bacdd35f96a92c18.png
但是小帅b不建议这样命名,有那么多名称,何必去定义关键词相关的名称呢。 5、两个下划线开头的命名:  __xx这种命名的方式更多的是用在类的继承,通过两个下划线开头命名的成员,可以防止被子类重写。我们来写一个这样的 Person 类:
5693f4c315064f14b04740841630bd24.png
可以看到,在 Person 这个类里面,有两个变量,一个是 name ,一个是 age。不过 age 是以两个下划线开头命名了。当我们去实例化这个 Person 的时候,发现 name 可以正常访问,但是 __age 无法访问了。我们来打印一下这个对象的属性:
87faae6709e0677d33f0a60c3359eeb4.png
仔细看,name 还是 name, 但是 __age 变成了 _Person__age。所以我们无法重写原来的 __age:
20ce8b8b6109814014403c5a1c354ebc.png
我们来打印一下这个 Son 类的属性:
b8945ea6104ec580ea383a384e7663d2.png
可以发现,son 里面的 __age 实质上已经变成了 _Son__age。所以你要得到真正重写的值可以这样:
c163bf448ecfa00ecd43a5e03bf18cd2.png
6、一个下划线+类名+两个下划线开头的命名:  _classname__xx通过上面第 5 点的解释,那么还有这么一种命名方式应该对你来说就好理解了:
456919f2ab87f926fea824f379009456.png
你可以这样去使用它:
5276a135e55d0dff331aad2a80c6098f.png
ok,以上就是 Python 中各种下划线的用法和解释,希望对你有帮助,如果你看一遍之后有点懵,那就再看几遍吧。当你把别人忽略的东西掌握起来,你就比他们牛逼了。

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

8b24b46500e237bd7703ca5c3cef506b.png

a2d5aec5a6c2c90a875d8471721ccff8.png

点「在看」的人都变好看了哦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值