程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Python 基础

    • Python基础
  • Python 进阶

    • 装饰器与生成器
    • 异常处理
    • 标准库精讲
    • 模块与包
    • pip包管理工具
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
前端 (opens new window)
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Python 基础

    • Python基础
  • Python 进阶

    • 装饰器与生成器
    • 异常处理
    • 标准库精讲
    • 模块与包
    • pip包管理工具
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
前端 (opens new window)
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • Python 基础

    • 环境搭建
    • 标识符
    • 变量
      • 1. 变量的基础:定义与赋值
        • 1.1 变量的创建与赋值
        • 1.2 Python 的动态类型特性
      • 2. 强制性规则:Python 的语法底线
        • 2.1 合法字符
        • 2.2 首字符限制
        • 2.3 关键字规避
        • 2.4 大小写敏感
      • 3. PEP 8 规范:社区公认的最佳实践
        • 3.1 变量与函数命名 (snake_case)
        • 3.2 常量命名 (UPPERSNAKECASE)
        • 3.3 类名命名 (PascalCase)
        • 3.4 “私有”变量的约定
      • 4. 语义化命名:让代码不言自明
        • 4.1 核心原则:清晰胜于简洁
        • 4.2 布尔类型命名法
        • 4.3 集合类型命名法
      • 5. 常见命名陷阱与规避策略
        • 5.1 避免覆盖内置函数
        • 5.2 避免使用混淆的单字符
        • 5.3 避免使用不当的缩写
        • 5.4 保持命名风格一致
      • 6. 实战演练:不同场景下的命名范例
        • 6.1 学生管理系统
        • 6.2 电子商务平台
    • 缩进和注释
    • 数据类型
    • 数据类型转换
    • 运算符
    • 字符串
    • 列表
    • 元组
    • 字典
    • 集合
    • if判断
    • for循环
    • while循环
    • 循环综合练习
    • Python函数
    • 函数与循环实战
    • 生成式
    • 文件读写
    • 面向对象
    • 面向对象综合案例
  • Python 进阶

  • Python
  • Python 基础
scholar
2025-07-20
目录

变量

# 变量

在 Python 编程中,变量是数据的“容器”或“标签”。给变量起一个好名字,就像给一个物品贴上清晰的标签一样,是编写高质量、可维护代码的基石。本文将带你从变量的基础概念出发,深入掌握 Python 的命名规则、社区规范和最佳实践。


# 1. 变量的基础:定义与赋值

从本质上讲,变量是计算机内存中一块区域的别名。我们可以把数据存入这块区域,并通过这个别名来访问和修改它。

# 1.1 变量的创建与赋值

在 Python 中,创建一个变量非常简单,使用赋值操作符 = 即可。

# 语法:变量名 = 值
student_name = "张三"  # 创建一个名为 student_name 的变量,并赋值为字符串 "张三"
student_age = 20      # 创建一个名为 student_age 的变量,并赋值为整数 20
student_score = 95.5  # 创建一个名为 student_score 的变量,并赋值为浮点数 95.5
1
2
3
4

# 1.2 Python 的动态类型特性

Python 是一门 动态类型 语言,这意味着你 不需要 预先声明变量的类型。变量的类型由其被赋予的值决定。

data = "Hello"      # 此时,data 的类型是字符串 (str)
print(type(data))   # 输出: <class 'str'>

data = 100          # 现在,同一个变量 data 的值变为整数,类型也随之改变
print(type(data))   # 输出: <class 'int'>
1
2
3
4
5

这种灵活性是 Python 的一大特点,但也要求我们通过清晰的命名来表明变量的预期用途。


# 2. 强制性规则:Python 的语法底线

以下是 Python 语法规定的硬性要求,必须严格遵守,否则程序会直接报错 (SyntaxError)。

# 2.1 合法字符

变量名只能包含:

  • 字母 (a-z, A-Z)
  • 数字 (0-9)
  • 下划线 (_)

任何其他字符,如空格、连字符 (-)、@、#、$ 等都是 非法 的。

# ✅ 合法命名
name_1 = "合法"
_user_name = "合法"

# ❌ 非法命名
# user-name = "非法"  # 包含连字符
# user name = "非法"  # 包含空格
# user@age = "非法"   # 包含特殊符号
1
2
3
4
5
6
7
8

# 2.2 首字符限制

变量名的第一个字符 不能是数字。

# ✅ 合法命名
name1 = "合法"
_1_name = "合法" # 虽然合法,但不推荐以下划线和数字开头

# ❌ 非法命名
# 1name = "非法"
1
2
3
4
5
6

# 2.3 关键字规避

Python 的 关键字(Keywords)是语言内置的、有特殊含义的单词,不能用作变量名。

常见的关键字有:if, else, for, while, def, class, import, return, True, False, None 等。

# ❌ 错误:使用关键字作为变量名
# class = "软件工程"
# def = "一个函数"

# ✅ 正确:如果想表达的含义与关键字冲突,可以添加下划线
class_name = "软件工程"
1
2
3
4
5
6

你可以通过以下代码查看当前 Python 版本的所有关键字:

import keyword
print(keyword.kwlist)
1
2

# 2.4 大小写敏感

Python 是 大小写敏感 的语言。这意味着 name, Name 和 NAME 是三个完全不同的变量。

name = "小写"
Name = "首字母大写"
NAME = "全大写"

print(name)  # 输出: 小写
print(Name)  # 输出: 首字母大写
1
2
3
4
5
6

# 3. PEP 8 规范:社区公认的最佳实践

PEP 8 是 Python 官方的代码风格指南,它为代码的布局、命名等方面提供了详细建议,旨在提高代码的可读性和一致性。

# 3.1 变量与函数命名 (snake_case)

  • 命名风格:使用全小写的单词,单词之间用下划线 _ 连接,这种风格被称为 蛇形命名法 (snake_case)。
  • 适用对象:普通变量、函数名、方法名、模块名。
# 变量
student_name = "李四"
max_retries = 3

# 函数
def calculate_average_score():
    pass

def get_user_profile():
    pass
1
2
3
4
5
6
7
8
9
10

# 3.2 常量命名 (UPPER_SNAKE_CASE)

  • 命名风格:使用全大写的单词,单词之间用下划线 _ 连接。
  • 适用对象:常量(在程序运行期间其值不应被改变的变量)。

注意:Python 本身没有真正的常量语法。这只是一种 约定,用于告诉其他开发者这个变量不应该被修改。

MAX_CONNECTIONS = 10
DEFAULT_TIMEOUT = 30  # 单位:秒
API_KEY = "YOUR_SECRET_API_KEY"
1
2
3

# 3.3 类名命名 (PascalCase)

  • 命名风格:所有单词的首字母都大写,不使用下划线分隔,这种风格被称为 帕斯卡命名法 (PascalCase) 或 驼峰命名法 (UpperCamelCase)。
  • 适用对象:类 (Class)。
class StudentInformation:
    pass

class DatabaseManager:
    pass
1
2
3
4
5

# 3.4 “私有”变量的约定

  • 单下划线前缀 (_private_var):这是一种约定,表示该变量或方法是“内部使用”的(受保护的),不希望被外部直接访问,但 Python 不会强制阻止访问。
  • 双下划线前缀 (__very_private_var):这会触发 Python 的 名称改写 (Name Mangling) 机制,使其在外部更难被访问,用于定义真正的私有属性。
class MyClass:
    def __init__(self):
        self.public_var = "公开的"
        self._protected_var = "受保护的"
        self.__private_var = "私有的"

    def _internal_method(self):
        pass
1
2
3
4
5
6
7
8

# 4. 语义化命名:让代码不言自明

遵守语法和规范只是基础,真正的艺术在于让变量名拥有清晰的业务含义。

# 4.1 核心原则:清晰胜于简洁

变量名应该准确描述其所代表的数据。

# ❌ 模糊的命名
d = "2024-07-26"   # d 可以是日期、字典、数据……?
l = ["张三", "李四"] # l 可以是列表、长度、左边……?

# ✅ 清晰的命名
current_date = "2024-07-26"
student_list = ["张三", "李四"]
1
2
3
4
5
6
7

# 4.2 布尔类型命名法

布尔变量(True / False)的名称应为一个是非问题,通常使用 is_, has_, can_ 等作为前缀。

# 推荐的布尔变量命名
is_active = True
has_permission = False
can_edit = True
should_send_email = True
1
2
3
4
5

# 4.3 集合类型命名法

  • 对于列表(List)、元组(Tuple)、集合(Set)等包含多个元素的变量,其名称应使用 名词的复数形式。
  • 避免在变量名后添加 _list, _dict 等多余的类型后缀。
# ✅ 推荐
students = ["张三", "李四"] # 列表
allowed_users = {"张三", "管理员"} # 集合
student_scores = {"张三": 95, "李四": 88} # 字典

# ❌ 不推荐
student_list = ["张三", "李四"] # "list" 后缀是多余的
1
2
3
4
5
6
7

# 5. 常见命名陷阱与规避策略

# 5.1 避免覆盖内置函数

绝对不要 使用 Python 的内置函数名或类型名作为变量名,这会覆盖掉它们原有的功能,导致难以排查的错误。

# ❌ 极其危险的错误
list = [1, 2, 3]      # 覆盖了内置的 list() 函数
str = "hello"         # 覆盖了内置的 str() 函数
id = 123              # 覆盖了内置的 id() 函数

# 之后当你尝试使用这些函数时
# new_list = list((4, 5, 6)) # TypeError: 'list' object is not callable
1
2
3
4
5
6
7

# 5.2 避免使用混淆的单字符

除了在简单循环中作为索引(如 i, j, k)或数学坐标(如 x, y, z)外,应避免使用易混淆的单字符作为变量名,尤其是 l(小写L)、O(大写O)和 I(大写I)。

# ❌ 易混淆
l = 100 # 看起来像数字 1
O = 0   # 看起来像数字 0
1
2
3

# 5.3 避免使用不当的缩写

只使用广为人知、不会产生歧义的缩写。

# ✅ 可接受的缩写
user_id = 101       # "id" 是公认的缩写
html_content = "..." # "html" 是公认的缩写
url = "..."         # "url" 是公认的缩写

# ❌ 模糊的缩写
num = 10            # 是数量(number)还是数字(numeral)? -> 用 count 或 number
pwd = "123"         # password 的缩写 -> 用 password
1
2
3
4
5
6
7
8

# 5.4 保持命名风格一致

在一个项目或代码文件中,应始终坚持使用同一种命名风格(如 snake_case)。

# ❌ 风格混乱
userName = "张三"   # 驼峰命名法
user_age = 20     # 蛇形命名法

# ✅ 风格统一
user_name = "张三"
user_age = 20
1
2
3
4
5
6
7

# 6. 实战演练:不同场景下的命名范例

# 6.1 学生管理系统

# 学生基本信息
student_id = "S2024001"
student_name = "张三"
age = 20
major = "计算机科学"

# 状态标识
is_enrolled = True
has_scholarship = False

# 成绩信息
course_grades = {"数学": 95, "英语": 88}
gpa = 3.8
1
2
3
4
5
6
7
8
9
10
11
12
13

# 6.2 电子商务平台

# 商品信息
product_name = "无线降噪耳机"
stock_quantity = 150
unit_price = 599.00
is_on_sale = True

# 订单信息
order_id = "ORD10023"
customer_name = "李四"
items_in_cart = ["无线降噪耳机", "充电宝"]
total_amount = 698.00
shipping_address = "北京市朝阳区..."
is_shipped = False
1
2
3
4
5
6
7
8
9
10
11
12
13
编辑此页 (opens new window)
上次更新: 2025/07/23, 06:33:16
标识符
缩进和注释

← 标识符 缩进和注释→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式