小帅b 学习python的正确姿式 python
咱们在定义一些变量或者方法的时候,经常会用到下划线,在 Python 中,下划线但是颇有用处的哟,好比变量,有些是一个下划线开头的(_xx),有些是两个下划线开头的(_xx),有些是在名称的结尾添加下划线的(xx),还有一些方法咱们经常看到两个下划线开头和结尾的(xx) 等等…markdown
为何要这么写呢?它们都表明什么意思?咱们之后如何定义好这些名称呢?那么接下来就是:ide
在 Python 解释器里面,对单个下划线是有特殊的 “感情” 的,我来给你举个例子:函数
仔细看你会发现, 是有值的,这是由于在 Python 解释器里面, 会指向你最后一次执行的表达式。这在咱们使用 Python 交互的时候经常会用到。学习
除此以外,咱们还可使用单个下划线来格式化变量的值,好比金额:3d
经过这样的表现,咱们能更加易读, Python 也知道咱们在表示什么。对象
再者,单个下划线还可使用在循环语句中:blog
二、你常见的 xx继承
这种以两个下划线开头和结尾的命名方式,我想应该是你最多见到的了,好比咱们以前说的类的初始化方法:ip
其实这些,咱们叫它们为 “魔法函数” ,也就是说,它是 Python 内置好了的,咱们能够直接拿来使用。因此你应该尽可能避免作这样相似的以两个下划线开头和结尾的方式去命名。
三、单个下划线开头的 _xx
以单个下划线开头命名的方法或者变量,就是说明它是仅提供内部使用的。
举一个例子,咱们来建立一个模块(handsomeb.py),而后在里面建立两个方法,一个以单个下划线开头命名,一个不以单个下划线开头命名:
接着咱们去引用这个模块,分别执行模块中的方法:
当咱们去执行 my_func() 输出 fxxkpython ,没毛病吧:
可是当咱们去执行 _my_func() 的时候就不行了:
这时候它告诉咱们 _my_func 没有定义,它只能被模块内部使用。
四、单个下划线结尾的 xx_
咱们知道, Python 有许多关键词,好比 def、return、calss、pass 这些,它们都是有特殊的意义的,因此咱们在定义变量或者方法的时候,不能够用它们来命名的,好比这样是错误的:
那么若是咱们死都要这样定义名称呢?为了区分,在它们的后面添加一个下划线:
可是小帅b不建议这样命名,有那么多名称,何须去定义关键词相关的名称呢。
五、两个下划线开头的命名: __xx
这种命名的方式更多的是用在类的继承,经过两个下划线开头命名的成员,能够防止被子类重写。
咱们来写一个这样的 Person 类:
能够看到,在 Person 这个类里面,有两个变量,一个是 name ,一个是 age。不过 age 是以两个下划线开头命名了。
当咱们去实例化这个 Person 的时候,发现 name 能够正常访问,可是 __age 没法访问了。
咱们来打印一下这个对象的属性:
仔细看,name 仍是 name, 可是 __age 变成了 _Person__age。
因此咱们没法重写原来的 __age:
咱们来打印一下这个 Son 类的属性:
能够发现,son 里面的 __age 实质上已经变成了 _Son__age。因此你要获得真正重写的值能够这样:
六、一个下划线+类名+两个下划线开头的命名: _classname__xx
经过上面第 5 点的解释,那么还有这么一种命名方式应该对你来讲就好理解了:
你能够这样去使用它:
ok,以上就是 Python 中各类下划线的用法和解释,但愿对你有帮助,若是你看一遍以后有点懵,那就再看几遍吧。当你把别人忽略的东西掌握起来,你就比他们牛逼了。
ps: 若是你对 Python 这些骚操做感兴趣,不妨了解一下小帅b的私密干货:帅帅的 vip ,以上这一篇只是其中的一小篇 “甜点”,那么咱们下回见咯,peace!