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

我们在定义一些变量或者方法的时候,常常会用到下划线,在 Python 中,下划线可是很有用处的哟,比如变量,有些是一个下划线开头的(_xx),有些是两个下划线开头的(__xx),有些是在名称的结尾添加下划线的(xx_),还有一些方法我们常常看到两个下划线开头和结尾的(__xx__) 等等…为什么要这么写呢?它们都代表什么意思?我们以后如何定义好这些名称呢?那么接下来就是:学习 Python 的正确姿势fb066e111361eb9d4cb49e997b347ccb.png1、只有一个下划线(_)是干嘛的呢?在 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

点「在看」的人都变好看了哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB学习2——Windows 使用mongo连接数据库

一、查看mongo帮助文档mongo.exe --help二、使用mongo 连接服务器mongo.exe 数据库地址:数据库端口号/数据库关闭服务器db.shutdownServer()注:关闭数据必须使用admin数据库权限

【UVA 10816】 Travel in Desert (最小瓶颈树+最短路)

【题意】 有n个绿洲, m条道路,每条路上有一个温度,和一个路程长度,从绿洲s到绿洲t,求一条道路的最高温度尽量小, 如果有多条, 选一条总路程最短的。 InputInput consists of several test cases…

联想小新air14笔记本黑屏_联想小新air14锐龙版测评,谈谈它的好和坏

联想小新air14锐龙版本测评了解数码就找小侠客,我是机圈小侠客 今天呢,主要和大家测评一下联想小新air14这款笔记本,总体而言的话,这款笔记本它是一个。对于办公人士或者轻度游戏爱好者来说的话,是一个不错的选择&…

Java入门:Java下载与安装方法

本文适合刚入门的Java编程的初学者阅读。 JDK有两种下载方法,一个是官网下载,另一个是第三方网站下载。官网速度也许有点慢,慢的话可以考虑去第三方网站下载。 一、官网下载 1. 访问地址:http://www.oracle.com/cn/downloads/inde…

Java 7:如何编写非常快速的Java代码

当我第一次写此博客时,我的目的是向您介绍ThreadLocalRandom类,它是Java 7中新增的用于生成随机数的类。 我已在一系列微基准测试中分析了ThreadLocalRandom的性能,以了解其在单线程环境中的性能。 结果相对令人惊讶:尽管代码非常…

[地图开发][算法及数据结构]四叉树原理

参考:http://blog.csdn.net/zhouxuguang236/article/details/12312099 原博客地址还有c++源码。。。 四叉树索引的基本思想是将地理空间递归划分为不同层次的树结构。它将已知范围的空间等分成四个相等的子空间,如此递归下去&…

按键 粘贴上一个命令_合并单元格、选择性粘贴的快捷键都是啥?今天一次告诉你……...

经常有人在群里问,合并单元格的快捷键是什么?选择性粘贴数值的快捷键是什么?今天就来聊聊快捷键的一些冷门知识……Alt键的作用快捷键其实就是一些组合键,主要用到Ctrl、shift、Alt这三个键其中之一或者是几个,再加上其…

Spring MVC和JQuery用于Ajax表单验证

在本教程中,我们将看到如何使用Ajax和Spring MVC和JQuery在服务器端验证表单。 Spring MVC为通过注释驱动的配置采用Ajax提供了非常方便的过程。 我们将使用此注释驱动的配置以JSON数据的形式发送Ajax响应。 响应将包含表单验证的状态,并且表单数据中存在…

Linux学习笔记——gzip命令

这个 gzip 程序被用来压缩一个或多个文件。当执行 gzip 命令时,则原始文件的压缩版会替代原始文件。 相对应的 gunzip 程序被用来把压缩文件复原为没有被压缩的版本。gzip 选项:选项 说明-c把输出写入到标准输出,并且保留原始文件。也有可能用…

java集合类——Stack类

查看java的API文档,Stack继承Vector类。 栈的特点是后进先出。 API中Stack自身的方法不多,基本跟栈的特点有关。 Java代码 import java.util.Stack; public class StackTest { public static void main(String[] args) { Stack&l…

免装版_无缝贴图制作软件 PixPlant2中文免装版

点击上方蓝字关注我们如您喜欢我们的公众号,不妨推荐给身边的朋友资源介绍:资源来源于网络,很多时候我们从网上找的贴图并不是无缝的,而且一般都没有高光/法线贴图这些,在材质的模拟上就要差了很多,在这里小…

Java中使用Map and Fold进行功能性编程

在函数式编程中,Map和Fold是两个非常有用的运算符,它们属于每种函数式语言。 如果Map和Fold运算符是如此强大且必不可少,那么您如何解释说即使Java编程语言缺少这两个运算符,我们也可以使用Java来完成工作? 事实是&…

Mysql 分页语句Limit用法

Mysql 分页语句Limit用法 1、Mysql的limit用法 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。 Sql代码 SELECT * FROM table LIMIT [offset,] r…

波纹扩散_C4D_动画amp;RS波纹扩散效果J_014

C4D-效果扩散效果,Redshift混合冰材质;利用顶点贴图扩散效果制作,RS混合调用顶点贴图。视频教程时长22分钟。对象为可编辑对象才能用顶点贴图。冰结域的扩展是这个动画的重点,在这个模式下,权重会根据半径向外扩展&…

软件测试工程师简历项目经验怎么写?--9999个已成功入职的软件测试工程师真实简历

简历是我们求职的第一步,也是非常重要的一步。 青云叔叔看过太多简历,最快3秒就淘汰一份简历,因为其实我们每天要收到很多简历进行筛选,那么面试官其实也是会很快进行对简历进行判断的,如果你对简历写的一塌糊涂&…

【poj2464】树状数组

这道题。。太特么多细节了。。 题意:在平面直角坐标系中给你N个点,stan和ollie玩一个游戏,首先stan在竖直方向上画一条直线,该直线必须要过其中的某个点,然后ollie在水平方向上画一条直线,该直线的要求是要…

azure git怎么使用_Azure(一)Azure Traffic Manager为我们的Web项目提供负载均衡

一,引言上一篇讲到我们将自己的Net Core Web 项目部署到 Azure 的 Web App 的一项 pass 服务,假如随着项目的日益增长的访问量,之前部署到单节点的应用可能无法保证其稳定性,可能会导致系统宕机等等问题,这个时候&…

文字描边_如何在网页里实现文字描边效果

文字描边想要在网页里实现文本描边效果,在以前只能使用Photoshop等来实现,但现在只需要一个text-stroke属性,即可轻松做到文本描边,渐变文本描边,甚至图片文本描边。01语法text-stroke: text-stroke是一个复合属性&…

javascript数据结构-栈

github博客地址 栈(stack)又名堆栈,它是一种运算受限的线性表。遵循后进先出原则,像垃圾桶似的。功能实现依然按照增删改查来进行,内部数据存储可以借用语言原生支持的数组。 栈类 function Stack(){this.data []; }添…

”二柱子“个人项目

”二柱子“个人项目 关于二柱子的个人项目,据说……是这么发生的…… 二柱子因为懒(,,• ₃ •,,),要给他上小学的儿子编写个能够出小学四则运算题目的程序。老师上课的时候又添加了条件: 1、打印至少30道题 2、除了整数之外,还要…