python中的下划线用法总结

在 Python 中,下划线(underscore)有多种用法。它在不同的上下文中可以扮演不同的角色,下面是其常见用法的总结:

1. 单下划线"_"

1.1 作为临时变量或无用变量

在循环或解包操作中,表示一个临时的或不关心的变量。

for _ in range(5):print("Hello, World!")a, _, b = (1, 2, 3)
print(a, b)  # 输出: 1 3

1.2 在交互式解释器中

在交互式解释器中,"_"用于保存最后一个表达式的结果。

>>> 5 + 3
8
>>> _ * 2
16

2. 单前导下划线 "_var"

表示弱“内部使用”约定,变量或方法不应从外部访问(但不会真正限制访问)。

class MyClass:def __init__(self):self._internal_var = 42obj = MyClass()
print(obj._internal_var)  # 虽然可以访问,但不推荐

3. 双前导下划线 "__var"

触发名称改写机制(name mangling),避免子类覆盖父类的同名属性。

class Base:def __init__(self):self.__private_var = 42class Derived(Base):def __init__(self):super().__init__()self.__private_var = 99obj = Derived()
print(obj.__dict__)  # 输出: {'_Base__private_var': 42, '_Derived__private_var': 99}

4. 双前导和双后缀下划线"__var__"

用于系统定义的特殊方法或变量,避免与用户自定义属性冲突。

class MyClass:def __init__(self):self.__init__ = "Not a constructor"obj = MyClass()
print(obj.__init__)  # 输出: Not a constructor

5. 单后缀下划线 "var_"

避免与 Python 关键字或内置函数名冲突。

def my_function(class_):return class_ + 1print(my_function(3))  # 输出: 4

6. 其它特殊用法

6.1 单下划线 "_" 在数值中表示千位分隔符

从 Python 3.6 开始,单下划线可以在数值常量中用作千位分隔符,提高可读性。

num = 1_000_000
print(num)  # 输出: 1000000

6.2 "_" 作为 I18N 库中的别名

在某些国际化(I18N)库中,"_" 用作翻译函数的快捷方式。

import gettext
_ = gettext.gettextprint(_("This is a translatable string"))

总结

下划线在 Python 中有丰富的语义,通过上下文和使用位置的不同,可以表示各种不同的含义。了解这些用法对于编写符合 Python 风格指南(PEP 8)的代码和理解他人代码非常重要。

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

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

相关文章

微信小程序多端应用Donut Android生成签名

一、生成签名的作用 确保应用的完整性:签名可以确保应用在发布后没有被修改。如果应用被修改,签名就会改变,Android系统就会拒绝安装。确定应用的唯一身份:签名是应用的唯一标识,Android系统通过签名来区分不同的应用…

设计模式18—— 迭代器模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 迭代器模式(Iterat…

基环树学习笔记

理论基础: 内向基环树就是每个联通块有且仅有一个环,并且出度为1的有向图,每一个内向基环树都是由联通环和指向联通环的树枝组成。而且基环可以只有两个节点构成。 Leetcode - 2127:参加会议的最多员工数 题目: 一个…

【WP|4】WordPress 简码(Shortcode)开发详解

简码(Shortcode)是 WordPress 提供的一项强大功能,允许开发者创建自定义的代码块,以便在文章、页面或小工具中轻松插入动态内容。本文将详细讲解简码的开发,从基础概念到高级用法,帮助你充分利用这一功能。…

fine-tune Microsoft/Phi-3-mini-128k-instruct

目录 logging超参数模型和Tokenizer加载数据处理数据集加载与处理训练保存微调模型参考使用transformers在聊天指令数据集上使用LoRA对Phi-3语言模型进行微调,以改进会话理解和响应生成。 logging 日志记录:设置日志记录以跟踪训练过程。 import sys import loggingimport …

【RabbitMQ】SpringAMQP--消息转换器

SpringAMQP–消息转换器 测试发送Object类型消息 1.声明队列 Configuration public class FanoutConfig {Beanpublic Queue objectQueue(){return new Queue("object.queue");} }运行消费者后: 2.发送消息 RunWith(SpringRunner.class) SpringBootTes…

【数据结构与算法】七大排序算法(上)

【数据结构与算法】七大排序算法(上) 🥕个人主页:开敲🍉 🔥所属专栏:数据结构与算法🍅 🌼文章目录🌼 1. 排序的概念及应用 1.1 排序的概念 1.2 排序的应用 1.3 常见排序算法 2. 常…

开源博客项目Blog .NET Core源码学习(23:App.Hosting项目结构分析-11)

本文学习并分析App.Hosting项目中后台管理页面的标签管理页面、轮播图维护页面。 标签管理页面 标签管理页面用于显示、检索、新建、编辑、删除标签数据,以便在前台页面的首页及文章专栏等页面显示标签数据。标签管理页面附带一新建及编辑页面,以支撑新…

设计井字棋游戏(一)

创建游戏登录注册窗口 用户名admin 密码admin(可自行改变) 主页面 1. 导包 import pickle:导入 pickle 模块,这是一个 Python 的内置模块,用于将 Python 对象序列化和反序列化。序列化是指将对象转换为字节流&am…

如同“水生态”的存储引擎|OceanBase数据转储合并技术解读(一)

本系列文章主要围绕 OceanBase数据库存储引擎中的转储合并进行解读,涉及到数据存储、转储合并、数据校验等方面的内容,旨在让读者了解OceanBase数据库的存储引擎中与转储合并有关的各种概念,帮助读者更好地理解OceanBase数据库的存储技术原理…

基于STM32实现智能饮水机控制系统

目录 引言环境准备智能饮水机控制系统基础代码示例:实现智能饮水机控制系统 温度传感器数据读取水泵和加热器控制水位传感器数据读取用户界面与显示应用场景:家庭和办公室的智能饮水管理问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在S…

关于pdfbox读取pdf

最近,想着将pdf的文件进行读取其内容,发现了一个比较好用的依赖pdfbox。目前使用这个依赖,进行实现一个简单实例,如果之后需要使用到更深的了解,会进行更新。这里提醒一下:jdk8尽量采用pdfbox3.x版本。 对…

Linux一键安装Docker、kkfileviewer

Linux一键安装Docker、kkfileviewer 一、安装docker 安装docker脚本 vi initDocker.sh脚本内容 #安装前先更新yum,防止连接镜像失败 yum -y update#卸载系统之前的docker(可选择,我这里直接注释了) #yum remove docker docker…

香橙派KunpengPro测评之使用C语言操控40pin引脚

香橙派KunpengPro测评之使用C语言操控40pin引脚 香橙派KunpengPro介绍香橙派实物图香橙派登录界面香橙派KunpengPro的登录界面香橙派KunpengPro的原始桌面香橙派KunpengPro内安装了VScode等软件香橙派KunpengPro的终端 香橙派硬件参数核心性能图形与显示接口丰富性扩展与兼容性…

【驱动】串口硬件流控和RS485自动收发

1、流控(Flow Control) 串口通信中的流控(Flow Control)是一种用于管理数据传输速率,防止数据丢失的机制。 流控可以分为硬件流控(Hardware Flow Control)和软件流控(Software Flow Control),两者的目的都是确保发送方和接收方在数据传输过程中同步。 1.1 硬件流控…

十四天学会Vue——Vue核心(理论+实战)上篇(第一天)

一、Vue核心(上篇) 热身tops:选取开发模式 ①用于开发模式 我们只需要知道 我们是开发模式,开发模式他会跟你提示代码出现错误的地方以及出错原因,而生产模式比较简洁。 ②用于生产模式 1.1 new Vue()实例 了解Vue&a…

数据库语法树优化

目录 一、σ、π、⋈ 1.选择σ 2.投影π 3.连接⋈ 二、 构建语法树 ① 解读sql语句 ② 写出关系代数表达式 ③ 画出语法树 三、优化语法树 四、练习 语法树优化方法 一、σ、π、⋈ 1.选择σ 选择就是在关系R中选择满足给定条件的诸元组。 通过条件SdeptIS选择出系别…

基于香橙派搭建家庭网盘

一、概述 家庭网盘是一种用于家庭用户的在线存储和文件共享服务。它允许家庭成员在云端存储、同步和分享照片、视频、文档等文件,方便快捷地访问和管理个人和家庭数据。家庭网盘通常提供安全可靠的数据存储和备份功能,保障用户数据的安全性。此外&#x…

Day-02面向对象

一、匿名函数 和函数的作用一致,都是进行代码逻辑的封装, 区别1 在定义时,匿名函数可以不指定函数的名字 区别2 匿名函数执行实现简单的计算 区别3 匿名函数会自动将计算的结果返回 定义格式 lambda 参数1,参数2...:计算逻辑(参数的处理逻辑…

一文解决弹窗交互设计难题,轻松上手

弹窗交互的分类 我们每天所说的弹出窗口是一个非常笼统的概念。我们习惯性地称所有的对话框、浮层和提示条为弹出窗口。事实上,弹出窗口可以分为两种类型:模态弹出框和非模态弹出框。在 UI 在设计中,当它迫使用户与之交互时,我们…