Python:单下划线 双下划线

本文参考:https://machinelearning.blog.csdn.net/article/details/125114737

单下划线

1. 变量(临时变量,引入未使用的变量)

  在Python中,变量包含:数字、字母、下划线等;所以单独一个下划线_也是一个变量,表示一个临时对象,一般后续不会用到,比如:

i = 0
for _ in range(10):i += 1

国际化和本地化字符串之间翻译查找的函数
单下划线_作为函数名时,一般是代表了国际化和本地化字符串之间翻译查找的函数。

2. 单下划线开头变量_var或函数_fun()

  单下划线开头的变量(_var)或函数(_fun):表示该变量或函数为内部使用的变量不建议在外部使用

# 单下划线作为命名约定
class MyClass:def __init__(self):self._internal_var = 42def _internal_method(self):return "Internal method"def public_method(self):return self._internal_method()

  在上面的例子中,变量_internal_var和方法_internal_method都以单下划线开头。这是一种约定,告诉其他开发人员这些成员是类内部使用的,不建议在类外部直接访问。公共方法public_method可以访问内部方法_internal_method

  • 但单下划线开头仅仅是一个提示,没有权限控制,实际上可以在外部访问。
    同时,如果用from <module> import *from <package> import *时,这些属性、方法、类将不被导入。

3. 单下划线结尾var_

  防止跟系统关键字重名,比如函数里需要有个参数class,但是Python中class为关键字,所以需要将 class设置为class_。

双下划线

1. 双下划线开头变量__var或函数__fun()

  双下划线开头变量(__var)或函数(__fun):代表着类中的私有变量名或函数,只有内部可以访问,外部不能访问

主要用于避免子类覆盖父类的方法,如果需要访问,需使用_classname__fun()。

2. 前后双下划线变量__var__或函数__fun__()

  系统定义的变量名称或函数,如Python的魔法函数:

__ init__()
__ str__()
__ new__()
__ unicode__()
__ call__()
__ len__()
__ repr__()
__ setattr__()
__ getattr__()
__ getattribute__()
__ delattr__()
__ setitem__()
__ getitem__()
__ delitem__()
__ iter__()
__ del__()
__ dir__()
__ dict__()
__ exit__()
__ enter()
__ all__()

  定义变量名称或函数是应该尽量避免前后加双下划线。

=======================================================================
总结:

  • 前面单下划线 : _var 变量所在模块/类以外的地方也能访问该变量,但最好不要
  • 前面双下划线 : __privateVar 变量所在模块/类以外的地方不能访问该变量,这是私有变量
  • 前后双下划线 : 如__name__和__init__ Python内置特殊变量,哪儿都可以访问

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

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

相关文章

Kotlin 密封类与接口

密封的类和接口表示受限制的类层次结构&#xff0c;这些层次结构提供了对继承的更多控制&#xff1b;在定义密封类的模块和包之外&#xff0c;不能出现其他子类&#xff1b;密封类的每个实例都有一个来自有限集的类型&#xff0c;该类型在编译此类时是已知的&#xff1b;一旦编…

Jenkins 构建前端服务更新控制

在当今的快节奏开发环境中&#xff0c;确保前端服务的高效和可靠更新至关重要。本文将介绍如何通过AWS服务&#xff08;如ECS和S3&#xff09;以及Jenkins进行参数化构建&#xff0c;实现前端服务的自动化部署和更新控制。我们将深入了解使用Python脚本管理部署流程&#xff0c…

嵌入式系统(二)单片机基础 | 单片机特点 内部结构 最小系统 电源 晶振 复位

上一篇文章我们介绍了嵌入式系统 嵌入式系统&#xff08;Embedded System&#xff09;是一种特定用途的计算机系统&#xff0c;它通常嵌入在更大的产品或系统中&#xff0c;用于控制、监测或执行特定的任务。这些系统通常由硬件和软件组成&#xff0c;旨在满足特定的需求&…

echarts条纹进度条

drawmonthqualified(){this.monthqualified echarts.init(document.getElementById(monthqualified));this.monthqualified.setOption({grid: {top: "15%",left:"20%",right:20%,bottom: "0%" //也可设置left和right设置距离来控制图表的大小},…

【致远OA】获取指定人员的协同待发列表

接口请求说明 V6.0接口更新:不在传入ticket&#xff0c;改为传memberId人员ID V6.0之前http请求方式&#xff1a;GET http://ip:port/seeyon/rest/affairs/draft 如 http://127.0.0.1/seeyon/rest/affairs/draft?ticketxxxxxx V6.0http请求方式&#xff1a;GET http://ip:p…

SpringBoot中WebSokcet无法注入Bean对象的解决方案

一、业务场景 Slf4j Component ServerEndpoint("/ws/{userId}") public class WebSocketServer {Autowiredprivate IChatService chatService;public static Map<Long, Session> sessionMap new ConcurrentHashMap<>();OnOpenpublic void onOpen(Sessi…

常见网络协议

1.DNS协议 &#xff08;域名系统&#xff09; DNS协议使用的端口号是53 位于OSI模型中的应用层 DNS系统的作用&#xff1a;将域名&#xff08;网址&#xff09;解析为IP地址。 DNS的基本原理是&#xff1a;将域名映射到IP地址 DNS工作流程 当用户给定一个域名&#xff0…

物联网技术如何影响我们的生活

随着科技的不断进步&#xff0c;物联网技术已经深刻地融入了我们的日常生活。物联网&#xff0c;即物联网&#xff08;Internet of Things&#xff0c;IoT&#xff09;&#xff0c;指的是通过互联网连接各种物理设备和对象&#xff0c;使它们能够进行数据交换和实时通信。这项技…

【十三】【动态规划】1745. 分割回文串 IV、132. 分割回文串 II、516. 最长回文子序列,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…

移动端APP版本治理

1、背景 在许多公司&#xff0c;APP版本都是不受重视的&#xff0c;产品忙着借鉴&#xff0c;开发埋头编码&#xff0c;测试想着不粘锅。 只有在用户反馈app不能用的时候&#xff0c;你回复客服说&#xff0c;让用户升级最新版本&#xff0c;是不是很真实。 而且业界也很少有…

一文讲清数据资产入表实操

《中共中央 国务院关于构建数据基础制度更好发挥数据要素作用的意见》已发布一年&#xff0c;数据资产化和入表已成为2023年的热门话题&#xff0c;随着2023年底国家数据局吹风《"数据要素x"三年行动计划&#xff08;2024-2026年&#xff09;》即将发布&#xff0c;这…

开发环境 目录记录

2023.12.27 jdk17 位置在 C:\DevelopTools\JavaDevelopTools\jdk17,配置了JAVA_HOME到环境变量&#xff0c;JAVA_HOME\bin到PATHapache-maven-3.6.1 位置在 C:\DevelopTools\JavaDevelopTools\apache-maven-3.6.1,配置了MAVEN_HOME到环境变量&#xff0c;MAVEN_HOME\bin到PA…

周赛378(中心扩散法、分组循环)

文章目录 周赛378[2980. 检查按位或是否存在尾随零](https://leetcode.cn/problems/check-if-bitwise-or-has-trailing-zeros/)转换题意 [2981. 找出出现至少三次的最长特殊子字符串 I](https://leetcode.cn/problems/find-longest-special-substring-that-occurs-thrice-i/)中…

[情商-7]:如何回答没有标准答案的两难问题

目录 前言&#xff1a; 一、用“逻辑推理思维”回答两难问题 二、用“情绪思维”回答两难问题 1.1 关注提问者提出问题背后的情绪状态和情绪/情感诉求 1.2 常见的常见的情绪和情感诉求 1.3 女性情感分析 1.4 理解女性情感的语言 1.5 如何通过语言理解女性的情绪需求 三…

模拟Spring事件监听机制

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 之前我们一起学习了Spr…

Maven下载和安装的详细教程

文章目录 一、Maven下载和安装1.1 下载 Maven1.2 配置环境变量 参考资料 一、Maven下载和安装 1.1 下载 Maven 打开 Maven 的官方网站Maven – Download Apache Maven&#xff0c;下载最新版本的 Maven 在可选择的版本中&#xff0c;不同版本的区别在于: binary是已经编译过的…

从零开始了解大数据(七):总结

系列文章目录 从零开始了解大数据(一)&#xff1a;数据分析入门篇-CSDN博客 从零开始了解大数据(二)&#xff1a;Hadoop篇-CSDN博客 从零开始了解大数据(三)&#xff1a;HDFS分布式文件系统篇-CSDN博客 从零开始了解大数据(四)&#xff1a;MapReduce篇-CSDN博客 从零开始了解大…

jdk9之后springboot项目访问外置jar包配置

启动命令增加 --add-opens java.base/jdk.internal.loaderALL-UNNAMED解释 --add-opens java.base/jdk.internal.loaderALL-UNNAMED 是 Java 9 引入的一个命令行选项&#xff0c;用于解决模块化系统&#xff08;Module System&#xff09;中的模块访问限制问题。 在 Java 9 中…

013、方法

1. 方法和函数的区别 方法与函数十分相似&#xff1a;它们都使用fn关键字及一个名称来进行声明&#xff1b;它们都可以拥有参数和返回值&#xff1b;另外&#xff0c;它们都包含了一段在调用时执行的代码。 但是&#xff0c;方法与函数依然是两个不同的概念&#xff0c;因为方法…

如何压缩图片?电脑图片压缩的方法

如果图片体积过大不仅会占用过多的内存&#xff0c;还容易在平时处理和上传的时候被限制&#xff0c;传输起来也比较慢&#xff0c;这个时候最简单的方法就是通过专业的图片处理工具压缩图片大小&#xff0c;现如今有许多在线处理工具可以选择&#xff0c;今天分享的压缩图就是…