我们在定义一些变量或者方法的时候,常常会用到下划线,在 Python 中,下划线可是很有用处的哟,比如变量,有些是一个下划线开头的(_xx),有些是两个下划线开头的(__xx),有些是在名称的结尾添加下划线的(xx_),还有一些方法我们常常看到两个下划线开头和结尾的(__xx__) 等等…

为什么要这么写呢?它们都代表什么意思?我们以后如何定义好这些名称呢?那么接下来就是:

学习 Python 的正确姿势

1、只有一个下划线(_)是干嘛的呢?

在 Python 解释器里面,对单个下划线是有特殊的 “感情” 的,我来给你举个例子:

仔细看你会发现,_ 是有值的,这是因为在 Python 解释器里面, _ 会指向你最后一次执行的表达式。这在我们使用 Python 交互的时候常常会用到。

除此之外,我们还可以使用单个下划线来格式化变量的值,比如金额:

通过这样的表现,我们能更加易读, Python 也知道我们在表示什么。

再者,单个下划线还可以使用在循环语句中:

2、你常见的 __xx__

这种以两个下划线开头和结尾的命名方式,我想应该是你最常见到的了,比如我们之前说的类的初始化方法:

其实这些,我们叫它们为 “魔法函数” ,也就是说,它是 Python 内置好了的,我们可以直接拿来使用。所以你应该尽量避免做这样类似的以两个下划线开头和结尾的方式去命名。

3、单个下划线开头的 _xx

以单个下划线开头命名的方法或者变量,就是说明它是仅提供内部使用的。

举一个例子,我们来创建一个模块(handsomeb.py),然后在里面创建两个方法,一个以单个下划线开头命名,一个不以单个下划线开头命名:

接着我们去引用这个模块,分别执行模块中的方法:

当我们去执行 my_func() 输出 fxxkpython ,没毛病吧:

但是当我们去执行 _my_func() 的时候就不行了:

这时候它告诉我们 _my_func 没有定义,它只能被模块内部使用。

4、单个下划线结尾的 xx_

我们知道, Python 有许多关键词,比如 def、return、calss、pass 这些,它们都是有特殊的意义的,所以我们在定义变量或者方法的时候,不可以用它们来命名的,比如这样是错误的:

那么如果我们死都要这样定义名称呢?为了区分,在它们的后面添加一个下划线:

但是小帅b不建议这样命名,有那么多名称,何必去定义关键词相关的名称呢。

5、两个下划线开头的命名: __xx

这种命名的方式更多的是用在类的继承,通过两个下划线开头命名的成员,可以防止被子类重写。

我们来写一个这样的 Person 类:

可以看到,在 Person 这个类里面,有两个变量,一个是 name ,一个是 age。不过 age 是以两个下划线开头命名了。

当我们去实例化这个 Person 的时候,发现 name 可以正常访问,但是 __age 无法访问了。

我们来打印一下这个对象的属性:

仔细看,name 还是 name, 但是 __age 变成了 _Person__age。

所以我们无法重写原来的 __age:

我们来打印一下这个 Son 类的属性:

可以发现,son 里面的 __age 实质上已经变成了 _Son__age。所以你要得到真正重写的值可以这样:

6、一个下划线+类名+两个下划线开头的命名: _classname__xx

通过上面第 5 点的解释,那么还有这么一种命名方式应该对你来说就好理解了:

你可以这样去使用它:

ok,以上就是 Python 中各种下划线的用法和解释,希望对你有帮助,如果你看一遍之后有点懵,那就再看几遍吧。当你把别人忽略的东西掌握起来,你就比他们牛逼了。

ps: 如果你对 Python 这些骚操作感兴趣,不妨了解一下小帅b的私密干货:帅帅的 vip ,以上这一篇只是其中的一小篇 “甜点”,那么我们下回见咯,peace!

记得给我点个赞哦,嘿嘿!

python的类是什么意思_Python 各种下划线都是啥意思_、_xx、xx_、__xx、__xx__、_classname_...相关推荐

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

    我们在定义一些变量或者方法的时候,常常会用到下划线,在 Python 中,下划线可是很有用处的哟,比如变量,有些是一个下划线开头的(_xx),有些是两个下划线开头的(__xx),有些是在名称的结尾添加 ...

  2. python双划线_Python中单下划线(_)和双下划线(__)的特殊用法

    函数使用单下划线_开头 使用单下划线(_)开头的函数_func不能被模块外部以: from module import *形式导入. 但可以用:from module import _func形式单独 ...

  3. python 中各种下划线的神操作:_、_xx、xx_、__xx__、_ _xx、_classname_ _xx

    文章目录 1.只有一个下划线(_) 2.单个下划线开头的(_xx) 3.单个下划线结尾的(xx_) 4.两个下划线开头和结尾的 "_ _ _xx_ _ _" 5.两个下划线开头的命 ...

  4. python的类程序的结构_Python程序员学习路径之数据结构篇

    原标题:Python程序员学习路径之数据结构篇 点击标题下「异步图书」可快速关注 在计算机科学中,数据结构是一门进阶性课程,概念抽象,难度较大.Python语言的语法简单,交互性强.用Python来讲 ...

  5. python的类中包含什么_Python中的类(中)

    上一篇介绍了Python中类相关的一些基本点,本文看看Python中类的继承和__slots__属性. 继承 在Python中,同时支持单继承与多继承,一般语法如下: classSubClassNam ...

  6. python类实例化 输入参数名字 下划线_Python 用下划线作为变量前缀和后缀指定特殊变量...

    原:http://blog.163.com/jackylau_v/blog/static/175754040201182113817834/ 转过来方便查阅=w= Python 用下划线作为变量前缀和 ...

  7. python的类属性和方法_Python 类的属性和方法

    本文介绍Python类中的属性和方法.和大部分语言类似,Python中的属性和方法也公有(public)和私有(private) 的区分. 一.类的公有和私有属性: 在Python中一般定义的属性为公 ...

  8. python中单下划线_foo与双下划线_Python中单下划线和双下划线

    什么是 Python? Python 之父 Guido van Rossum 说:Python是一种高级程序语言,其核心设计哲学是代码可读性和语法,能够让程序员用很少的代码来表达自己的想法. 对于我来 ...

  9. python双划线_python单下划线/双下划线总结

    classA():def __init__(self,name,number,age): self.__name =name self._number=number self.age=age a= A ...

最新文章

  1. 自组织映射网络(SOM)如何解决TSP问题
  2. DNSSEC 原理、配置与布署简介
  3. 1968. [AHOI2005]约数研究【数论】
  4. visual studio学习python_python3从零学习-开发环境搭建之Visual Studio Code篇
  5. 纯CSS无hacks的跨游览器多列布局(转)
  6. java hibernate 分页查询_4 Hibernate HQL查询,分页查询
  7. Solidity 简易教程0x001
  8. Git协作流程(转)
  9. POJ 1984 Navigation Nightmare
  10. debian8 qemu中KVM对rbd的支持
  11. MULTISIM仿真
  12. 教你用python截屏APP,将截取到的图片进行文字识别并将信息保存在EXCEL中。(附源码)
  13. 电赛笔记【数模转换原理】
  14. 双向链表的插入及删除图解
  15. android 自动发彩信,Android编程实现定时发短信功能示例
  16. 教你如何用ps美化皮肤 每一步都很容易理解!
  17. 关于wifi模块连接路由器远程控制的一些问题
  18. 告诉你Windows PE 是什么东东?详细介绍一下winpe
  19. cgroup-net_cls子系统分析
  20. Charles抓包工具测试实战

热门文章

  1. j2ee可以用于前端开发吗_用于J2EE开发的Cloud IDE
  2. 首个JDK 10(18.3)发行候选版(内部版本43)展示了新的版本控制方案
  3. sudo su su_Spring Security应用程序中的su和sudo
  4. Drools可执行模型还活着
  5. java 过滤xss脚本_Java Web应用程序的反跨站点脚本(XSS)过滤器
  6. 使用RxJava和SseEmitter进行服务器发送的事件
  7. Apache Lucene的结构
  8. 在JVM中记录世界停顿
  9. 使用tinylog 1.0简化您的日志记录
  10. 从jHiccup开始