Python3中_和__的用途和区别

目录

一、_(下划线)

1、临时变量:

2、未使用的变量:

二、__(双下划线)

1、私有属性:

2、私有方法:

三、__的一些特殊用途。

总结


Python3中的_和__是两个特殊的标识符,它们在Python中有不同的用途和区别。下面我将详细介绍这两个标识符的用途和区别,并结合代码示例进行说明。

一、_(下划线)

_在Python中通常用作临时变量或未使用的变量。它的作用是在调试或临时存储数据时使用,通常不会在代码中保留。

1、临时变量:

在编写代码时,我们经常需要临时存储一些中间结果或临时值。在这种情况下,可以使用_作为临时变量。例如:

result = 1 + 2  
_ = result * 2  # 临时存储result * 2的结果  
print(_)  # 输出4

在这个例子中,_被用作一个临时变量,用于存储result * 2的结果,以便稍后使用。

2、未使用的变量:

在编写函数或方法时,有时我们会定义一些参数,但实际上并不需要使用它们。此时,可以使用_来表示该参数未被使用。例如:

def my_function(a, b, c=None):  
    if c is None:  
        _ = a + b  # c未被使用,使用_表示  
    else:  
        _ = a - b  # c被使用,这里用_表示c未被使用  
    return _

在这个例子中,如果调用my_function(1, 2),则c参数未被使用,因此使用_来表示。如果调用my_function(1, 2, 3),则c参数被使用,因此这里的_表示c未被使用。

需要注意的是,虽然_可以用于临时存储数据或表示未使用的变量,但在实际编程中应该避免过度使用它。因为过度使用会导致代码可读性降低,且可能会引起混淆。

二、__(双下划线)

__在Python中有特殊的含义,它用于表示私有属性和方法。当一个变量或方法名前面有两个下划线时,它会被视为私有属性或方法,不能直接从外部访问。

1、私有属性:

私有属性是指在类内部定义的属性,不能直接从外部访问。在Python中,通过在属性名前面加上两个下划线来定义私有属性。例如:

class MyClass:  
    def __init__(self):  
        self.__private_attribute = "Hello, World!"  # 定义私有属性  
    def public_method(self):  
        print(self.__private_attribute)  # 可以访问私有属性

在这个例子中,__private_attribute是一个私有属性,不能直接从外部访问。但是可以通过类的公共方法来访问它。

2、私有方法:

私有方法是指在类内部定义的方法,不能直接从外部调用。在Python中,通过在方法名前面加上两个下划线来定义私有方法。例如:

class MyClass:  
    def __init__(self):  
        pass  
    def __private_method(self):  
        print("This is a private method.")  # 定义私有方法  
    def public_method(self):  
        self.__private_method()  # 可以调用私有方法

在这个例子中,__private_method()是一个私有方法,不能直接从外部调用。但是可以通过类的公共方法来调用它。

需要注意的是,虽然私有属性和方法可以提高代码的封装性和安全性,但过度使用也可能导致代码可读性和可维护性降低。因此,在使用时应该根据具体情况进行权衡。


三、__的一些特殊用途。

1、__doc__:这个特殊属性用于存储一个对象的文档字符串(docstring)。当你在Python交互式解释器或IDE中输入help()时,就会显示这个docstring。例如:

class MyClass:  
    def __init__(self):  
        """This is a docstring for MyClass."""  
        pass  
  
help(MyClass)

这段代码会显示MyClass的docstring:"This is a docstring for MyClass."
2. __file__:这个特殊属性用于获取模块文件的路径名。例如:

import os  
print(os.__file__)

这段代码会输出os模块的路径。
3. __name__:这个特殊属性用于获取当前模块的名称。例如:
print(__name__)
这段代码会输出当前模块的名称。如果这个文件被直接运行,那么__name__的值就是__main__。
4. __package__:这个特殊属性用于指定一个命名空间包的名称。当一个模块被导入时,它的__package__属性被设定为导入语句中指定的包的名称,或者为None。例如:

5、__path__:这个特殊属性用于获取模块的搜索路径列表。当一个模块被导入时,它的__path__属性被设定为搜索路径列表。这个列表是一个由字符串组成的列表,每个字符串代表一个搜索路径。例如:
6、__loader__:这个特殊属性用于获取负责加载该模块的模块加载器对象。例如:
7、__cached__:这个特殊属性用于获取编译后的模块源码或bytecode缓存的路径。例如:当一个模块被导入时,Python会将其源码或字节码缓存起来以减少重新编译的时间。__cached__属性就是指向这个缓存文件的路径。例如:
8、__import__() 和 __importlib__():这两个函数用于动态地导入模块。其中,__import__()函数是Python内建的,用于导入模块;而__importlib__()函数是一个第三方库提供的,功能更加强大和灵活。例如:使用这两个函数可以动态地导入模块,并且可以在导入过程中执行自定义的代码。例如:使用这两个函数可以动态地导入模块,并且可以在导入过程中执行自定义的代码。需要注意的是,这两个函数的用法比较复杂,需要有一定的Python编程经验才能正确使用。因此,建议在使用之前先详细了解它们的文档和示例代码。

总结

在本文中,我们详细介绍了Python3中的___的用途和区别。_通常用作临时变量或未使用的变量,而__则用于表示私有属性和方法。此外,我们还介绍了__doc____file____name____package____path____loader____cached__等特殊属性,以及__import__()__importlib__()等动态导入模块的函数。

通过了解这些特殊标识符和属性的用途,我们可以更好地理解和使用Python编程语言。同时,这些知识也可以帮助我们编写更加高效、可读性和可维护的代码。

总之,掌握Python中的特殊标识符和属性的用途是提高编程技能的重要一环。希望本文的内容能够对你有所帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB的数据库引用

本文主要介绍MongoDB的数据库引用。 目录 MongoDB的数据库引用 MongoDB的数据库引用 MongoDB是一种面向文档的NoSQL数据库,它使用BSON(Binary JSON)格式存储和查询数据。在MongoDB中,数据库引用是一种特殊的数据类型,…

面试算法56:二叉搜索树中两个节点的值之和

题目 给定一棵二叉搜索树和一个值k,请判断该二叉搜索树中是否存在值之和等于k的两个节点。假设二叉搜索树中节点的值均唯一。例如,在如图8.12所示的二叉搜索树中,存在值之和等于12的两个节点(节点5和节点7)&#xff0…

本地缓存与多级缓存

一、前言 缓存对于一个高并发场景下的微服务应用来说具有重要的作用,不管是在架构选型还是设计阶段,缓存都是应用扛高并发提升吞吐量的有效手段。缓存对于大多数开发的同学来说并不陌生,一个基本的缓存使用流程如下: 简而言之&am…

华为配置OSPF与BFD联动示例

组网需求 如图1所示,SwitchA、SwitchB和SwitchC之间运行OSPF,SwitchA和SwitchB之间的交换机仅作透传功能。现在需要SwitchA和SwitchB能快速感应它们之间的链路状态,当链路SwitchA-SwitchB发生故障时,业务能快速切换到备份链路Swi…

【LeetCode刷题笔记(9-1)】【Python】【无重复字符的最长子串】【滑动窗口】【中等】

文章目录 引言无重复字符的最长子串题目描述提示 解决方案1:【滑动窗口】结束语 无重复字符的最长子串 引言 编写通过所有测试案例的代码并不简单,通常需要深思熟虑和理性分析。虽然这些代码能够通过所有的测试案例,但如果不了解代码背后的思…

七轴开源协作机械臂myArm视觉跟踪技术!

引言 ArUco标记是一种基于二维码的标记,可以被用于高效的场景识别和位置跟踪。这些标记的简单性和高效性使其成为机器视觉领域的理想选择,特别是在需要实时和高精度跟踪的场景中。结合机器学习和先进的图像处理技术,使用ArUco标记的机械臂系统…

爬虫国密加密案例:某医保服务

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、找出需要加密的参数 js运行 atob(‘aHR0cHM6Ly9mdXd1Lm5oc2EuZ292LmNuL25hdGlvbmFsSGFsbFN0LyMvc2VhcmNoL21lZGljYWw/Y29…

HTML---CSS美化网页元素

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.div 标签&#xff1a; <div>是HTML中的一个常用标签&#xff0c;用于定义HTML文档中的一个区块&#xff08;或一个容器&#xff09;。它可以包含其他HTML元素&#xff0c;如文本、图像…

adb: error: cannot create file/directory ‘d:/1.png‘: No such file or directory

将文件从设备读取到PC 由于权限问题&#xff0c;不能直接pull到电脑磁盘根目录&#xff0c;否则会报错&#xff1a; adb pull <remote> <local> eg: C:\Users\admin>adb pull /sdcard/server.log C:\Users\admin\Desktop /sdcard/server.log: 1 file pulled.…

AI创作系统ChatGPT网站源码,支持AI绘画,支持GPT语音对话+智能思维导图生成

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

客观题测试-第7章查找

第1关&#xff1a;查找客观题测试&#xff08;一&#xff09; 1、关键字可以唯一地标识一个数据元素。 A、对 B、错 2、二叉排序树是一个动态查找表。 A、对 B、错 3、如果顺序表中各元素的查找概率相同&#xff0c;在顺序查找时&#xff0c;查找不成功的平均查找长度因…

nodejs微信小程序+python+PHP国漫推荐系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

TrustZone之其他设备及可信基础系统架构

一、其他设备 最后,我们将查看系统中的其他设备,如下图所示: 我们的示例TrustZone启用的系统包括一些尚未涵盖的设备,但我们需要这些设备来构建一个实际的系统。 • 一次性可编程存储器(OTP)或保险丝 这些是一旦写入就无法更改的存储器。与每个芯片上都包含相同…

【Vue2】Component template should contain exactly one root element.

问题描述 [plugin:vite:vue2] Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.原因分析 这个错误通常是由于 Vue 组件的模板中包含多个根元素导致的。Vue 要求组件模板中只…

图片速览 PoseGPT:基于量化的 3D 人体运动生成和预测(VQVAE)

papercodehttps://arxiv.org/pdf/2210.10542.pdfhttps://europe.naverlabs.com/research/computer-vision/posegpt/ 方法 将动作压缩到离散空间。使用GPT类的模型预测未来动作的离散索引。使用解码器解码动作得到输出。 效果 提出的方法在HumanAct12&#xff08;一个标准但小规…

13.FTP

FTP FTP配置 添加一个本地用户 设置个密码 服务类型是FTP 工作路径授权给用户 设置用户角色为网络管理员 开启FTP服务 R2的路径下有这些文件 在R1进行测试&#xff0c;输入刚才创建的用户密码 get 获取文件 put上传文件 也可以在PC进行访问 可以升级路由器系…

阅览窗格功能虽然便利,但有时会出错,特别是在Word和Excel文件中更为常见

当你打开预览窗格功能时&#xff0c;每次你打开Windows文件资源管理器并选择任何文件&#xff0c;你将在屏幕的右窗格上看到该文件的小预览缩略图。 由于这个新功能&#xff0c;你可以在Windows资源管理器的右窗格上以缩略图的形式看到文件的小预览。此功能在更快地识别文件方…

SVN小白常见操作流程

SVN小白常见操作流程 一、什么是Subversion&#xff1f;二、TortoiseSVN客户端安装教程三、SVN 操作3.1 SVN Ckeckout(检出)3.2 Add(新增文件)3.3 SVN Commit(提交)3.4 SVN Update(更新操作)3.5SVN Delete(删除操作)3.6 SVN Revert to a revision(版本回溯)3.7 不同版本内容之间…

三大主流前端框架介绍

在前端项目中&#xff0c;可以借助某些框架&#xff08;如React、Vue、Angular等&#xff09;来实现组件化开发&#xff0c;使代码更容易复用。此时&#xff0c;一个网页不再是由一个个独立的HTML、CSS和JavaScript文件组成&#xff0c;而是按照组件的思想将网页划分成一个个组…

风速预测(六)基于Pytorch的EMD-CNN-GRU并行模型

目录 前言 1 风速数据EMD分解与可视化 1.1 导入数据 1.2 EMD分解 2 数据集制作与预处理 2.1 先划分数据集&#xff0c;按照8&#xff1a;2划分训练集和测试集 2.2 设置滑动窗口大小为96&#xff0c;制作数据集 3 基于Pytorch的EMD-CNN-GRU并行模型预测 3.1 数据加载&a…