avatar

RWO.cc

读一次写一次

  • 首页
  • 搭建手册
  • 笔记
  • 短视频
  • 关于
  • 🌈200粉丝🌈
Home 为什么 Python 不建议使用下划线开头的标识符?
文章

为什么 Python 不建议使用下划线开头的标识符?

Posted 2024-09-20 Updated 2024-09- 19
By RWO.
5~6 min read

为什么 Python 不建议使用下划线开头的标识符?

在 Python 中,标识符是变量、函数、类等命名的标记符。虽然 Python 允许使用下划线开头的标识符,但一般情况下并不建议这样做,除非有特定的用途。本文将详细解释为什么 Python 不建议使用下划线开头的标识符,并结合实例代码帮助你更好地理解这一点。

一、单下划线 _ 的用途

单下划线 _ 在 Python 中有特定的用途,主要有以下几种:

1. 用作临时变量

在循环或解构赋值时,单下划线 _ 常被用作临时变量,表示不关心的值。例如:

# 在循环中用作临时变量
for _ in range(5):
    print("Hello, World!")

输出结果为:

Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!

2. 在交互式解释器中表示上一个表达式的结果

在 Python 的交互式解释器中,单下划线 _ 表示上一个表达式的结果。例如:

>>> 5 + 3
8
>>> _
8

3. 用作国际化函数的名称

在国际化(i18n)中,单下划线 _ 通常用作函数名来获取翻译文本。例如:

import gettext
_ = gettext.gettext
print(_("Hello, World!"))

二、单下划线开头 _var 的用途

单下划线开头的标识符通常用于表示“内部使用”或“保护的”变量或方法,尽管它并不会真正限制访问。例如:

class MyClass:
    def __init__(self):
        self._internal_var = 42

# 实例化对象
obj = MyClass()
print(obj._internal_var)  # 输出:42

1. 约定俗成的“内部使用”

虽然以单下划线开头的变量仍然可以被外部访问,但它是一种约定,表示该变量或方法不应该被外部代码使用。这有助于代码的可读性和维护性。

2. 避免与关键字冲突

单下划线开头的标识符还可以避免与 Python 的关键字发生冲突。例如:

class_ = "Math"  # 避免与关键字 class 冲突
print(class_)

三、双下划线开头 __var 的用途

双下划线开头的标识符用于名称改写(name mangling),以避免子类覆盖。例如:

class Base:
    def __init__(self):
        self.__private_var = 42

class Derived(Base):
    def __init__(self):
        super().__init__()
        self.__private_var = 100

# 实例化对象
obj = Derived()
print(obj.__dict__)  # 输出:{'_Base__private_var': 42, '_Derived__private_var': 100}

1. 名称改写机制

双下划线开头的标识符在类定义中会被改写,以防止子类覆盖。例如,__private_var 在类 Base 中会被改写为 _Base__private_var。

2. 避免名称冲突

名称改写可以有效避免在继承链中的名称冲突,使得子类可以安全地定义自己的变量而不影响基类的实现。

四、总结

虽然 Python 允许使用下划线开头的标识符,但不建议滥用这些约定。合理使用单下划线和双下划线,可以提高代码的可读性和可维护性。在实际编程中,遵循这些约定有助于更好地理解和管理代码。

短视频
每日一点 短视频 Python
License:  CC BY 4.0
Share

Further Reading

Nov 3, 2024

什么是 python 的闭包

在 Python 中,闭包(Closure)是一种函数对象,它不仅包含了函数的代码,还包含了函数创建时的环境变量。这意味着闭包可以“记住”其外部作用域中的变量,即使在外部作用域已经结束后,闭包仍然可以访问这些变量。 函数可以访问他被创建时所处的上下文环境,这被称为闭包。 闭包的基本特征 嵌套函数:闭

Nov 2, 2024

使用argparse模块解析命令行参数

在 Python 中,argparse 模块用于解析命令行参数,使得脚本可以更灵活地接受用户输入。以下是如何使用 argparse 模块解析命令行参数的详细介绍和示例。 基本用法 示例:简单的命令行参数解析 首先,创建一个简单的脚本来解析命令行参数。我们将创建一个脚本,该脚本接受两个整数并打印它们的

Nov 1, 2024

Python中的二维码生成与解析(花里胡哨)

如何使用 qrcode 库生成各种有趣的二维码,包括彩色二维码、带 Logo 的二维码和动态 GIF 二维码。下面,我们将逐步介绍这些功能。 Qrcode 库简介 qrcode 库是一个强大的 Python 工具,用于生成二维码。除了基本的二维码,它还支持自定义功能,如颜色变化、样式设计和动画效果。

OLDER

Python 中如何获取字典的所有键?

NEWER

Python 如何声明多个变量并赋值?

Recently Updated

  • 什么是 python 的闭包
  • 使用argparse模块解析命令行参数
  • Python中的二维码生成与解析(花里胡哨)
  • Python中的二维码生成与解析(基础使用)
  • 使用platform模块获取系统信息

Trending Tags

学习 Git 工具 SQL docker-compose 每日一点 快捷键 Flink fastapi Windows

Contents

©2025 RWO.cc. Some rights reserved.

Using the Halo theme Chirpy