查看全课大纲(第 6 / 51 节)
  1. 1.Python 是什么?为什么值得学?
  2. 2.如何为 Python 编程准备一个“全家桶”环境?
  3. 3.Python 有哪几种执行方法?
  4. 4.行与缩进到底有什么用?
  5. 5.注释有什么用,怎么写?
  6. 6.变量:如何给数据起个好名字?
  7. 7.运算符的优先级和常见坑点是什么?
  8. 8.Python 中,数字和布尔值究竟有哪几种?
  9. 9.输入函数 `input()` 和文件读取 `open()` 怎么用?
  10. 10.如何将程序的结果展示给用户或保存下来?
  11. 11.CSV 文件怎么读怎么写才方便?
  12. 12.列表是什么,如何创建和访问它?
  13. 13.列表的修改操作,有哪些方法?
  14. 14.列表切片为什么能取到部分元素?排序和查找又该怎么用?
  15. 15.判断语句:如何让程序根据条件做不同的事?
  16. 16.for 循环如何遍历序列中的元素?
  17. 17.while 循环什么时候才会停?
  18. 18.while 循环的结束条件,你写对了吗?
  19. 19.循环中途想提前结束,怎么办?
  20. 20.`break` 和 `continue` 到底有什么区别?
  21. 21.列表推导式如何让代码更简洁高效?
  22. 22.字符串怎么定义、拼接和操作?
  23. 23.元组:为什么定义单个元素时要加逗号?
  24. 24.集合(set)怎么用?如何快速去重和做集合运算?
  25. 25.字典是什么,为什么比列表更方便?
  26. 26.字典的增删改查与遍历,如何避免 KeyError?
  27. 27.函数里的变量,为什么有的能用有的不能用?
  28. 28.在函数内部修改全局变量,为什么有时不生效?
  29. 29.函数里能修改全局变量吗?返回值怎么用?
  30. 30.匿名函数:如何用 lambda 快速定义简单函数?
  31. 31.面向对象编程是什么,为什么需要它?
  32. 32.类中的方法和属性到底怎么定义和使用?
  33. 33.如何控制对对象内部属性和方法的访问?
  34. 34.异常发生时,程序会怎样继续执行?
  35. 35.如何组织代码:包和模块
  36. 36.`if __name__ == '__main__'` 到底有什么用?
  37. 37.如何用 IDE 的 Debug 功能排查程序错误?
  38. 38.Matplotlib 绘图的第一步该做什么?
  39. 39.Figure 是什么,如何设置图形尺寸?
  40. 40.如何自定义 Matplotlib 的坐标轴?
  41. 41.如何为图表添加图例,让不同曲线一目了然?
  42. 42.饼图怎么画才能直观展示数据占比?
  43. 43.如何用 Matplotlib 绘制散点图?
  44. 44.柱状图怎么画?
  45. 45.如何使用 Matplotlib 绘制等高线图?
  46. 46.如何在 Matplotlib 中绘制子图?
  47. 47.zip 函数如何把多个列表“打包”在一起?
  48. 48.如何给可迭代对象加上索引?
  49. 49.random 模块如何生成随机数?
  50. 50.math 模块怎么用?
  51. 51.Counter 如何快速统计元素出现次数?

变量:如何给数据起个好名字?

约 16 分钟

小象实战讲义 · Python 编程从入门到实践

在编程中,我们经常需要处理各种数据,比如年龄、价格、姓名等。如果每次使用数据都要写具体的值(如 23、13.5),不仅麻烦,而且数据一旦变化,就需要修改很多地方。变量就是解决这个问题的工具:它像一个标签,可以贴在任何数据上,让我们通过一个简短的名字来引用复杂的数据。本节将学习变量的定义、使用、命名规则以及如何查看变量类型,这是理解后续所有数据操作的基础。

💡 核心导读

  • 变量是什么:一个指向数据的名字,通过 变量名 = 值 的形式创建。
  • 变量的特点:Python 中变量类型由解释器自动判断,无需手动声明。
  • 如何查看变量类型:使用 type(变量名) 函数。
  • 变量命名规则:要简洁明了、见名知意,并遵循特定的命名惯例。
  • 命名禁区:不能使用 Python 的保留关键字作为变量名。

变量的定义与基本使用

在 Python 中,变量是各种类型值的名字。你可以把它想象成内存中存储数据的一个“小方格”的标签。计算机内存有很多这样的“小方格”,每个都有复杂的地址。变量就是用一个简单好记的名字(如 age)来代替那串难以记忆的地址,从而方便我们操作数据。

定义变量的语法非常简单:

变量名 = 值

等号 = 在这里是赋值的意思,表示“把右边的值,交给左边的名字来保管”。

# 定义变量并赋值
age = 23          # 变量 age 现在指向整数值 23
money = 13.5      # 变量 money 指向浮点数值 13.5
greeting = "Hello" # 变量 greeting 指向字符串 "Hello"

# 使用变量:直接使用变量名就相当于使用它指向的值
print(age)        # 输出:23
print(greeting)   # 输出:Hello

# 对变量进行操作
total = age + money  # 将 age 和 money 的值相加,结果赋值给新变量 total
print(total)         # 输出:36.5
23
Hello
36.5

变量的类型与动态特性

在 Python 中,变量的类型不需要我们显式指定。当你写下 age = 23 时,Python 解释器会自动判断 23 是整数(int 类型),并让 age 成为指向这个整数的变量。这种特性称为动态类型。

这意味着,同一个变量名,在不同时刻可以指向不同类型的数据。

如何查看变量类型?

使用内置函数 type(),将变量名作为参数传入,就能查看变量当前指向的数据类型。

# 变量可以指向任何类型的数据
something = 100      # something 是整数
print(type(something))

something = 3.14     # 现在 something 变成了浮点数
print(type(something))

something = "Python" # 现在 something 又变成了字符串
print(type(something))

# 对普通变量使用 type()
name = "Alice"
score = 95.5
print(type(name))
print(type(score))
<class 'int'>
<class 'float'>
<class 'str'>
<class 'str'>
<class 'float'>

注意:虽然 Python 允许变量类型随意改变,但在实际编程中,为了让代码更清晰、易维护,我们通常会让一个变量保持同一种数据类型。

标识符与命名规则

标识符是我们在程序中自定义的各种名字,主要包括变量名、函数名、类名等。给标识符(尤其是变量)起一个好名字至关重要,要做到“见名知意”。

命名规则(必须遵守)

  1. 组成字符:只能由字母(a-z, A-Z)、数字(0-9)和下划线(_)组成。
  2. 开头字符:不能以数字开头。
  3. 区分大小写:age、Age 和 AGE 是三个不同的变量。
  4. 不能是关键字:不能使用 Python 语言保留的特殊单词(如 for、if)。

命名惯例(建议遵守)

Python 社区有一些约定俗成的命名风格:

  • 变量名、函数名:推荐使用小写字母 + 下划线,多个单词之间用下划线连接,例如 user_name、student_age。
  • 类名:推荐使用大驼峰命名法,即每个单词的首字母大写,例如 UserInfo。
user_name = "张三"   # 好:清晰易懂
student_age = 20     # 好:多个单词用下划线连接

class UserInfo:      # 类名使用大驼峰
    pass

关键字:不能用作变量名的单词

关键字是 Python 语言内部已经定义好、具有特殊功能的单词,它们被用来构建程序的控制结构(如循环、条件判断)。你不能用它们作为变量名、函数名或类名。

如何查看所有关键字?可以通过 keyword 模块。

import keyword  # 导入 keyword 模块
print(keyword.kwlist)  # 打印所有关键字列表
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

以上列表为 Python 3.12.10 下的实跑输出;不同 Python 版本的关键字列表可能略有差异。

尝试用关键字作为变量名会直接导致语法错误。

# 错误示例:使用关键字 'for' 作为变量名
for = 2

运行后报错:
  File "<stdin>", line 1
    for = 2
        ^
SyntaxError: invalid syntax

📝 动手练一练

  1. 变量创建与类型查看:创建一个变量 book_title,赋值为你最近读的一本书的名字(字符串)。再创建一个变量 reading_hours,赋值为你阅读它所用的小时数(整数或浮点数)。最后,分别打印这两个变量的值和它们的类型。
👉 点击查看参考答案

思路:按照 变量名 = 值 的格式创建两个变量,然后使用 print 分别输出值和 type() 函数的结果。

# 创建变量并赋值
book_title = "Python编程从入门到实践"
reading_hours = 15.5

# 打印变量的值
print("书名:", book_title)
print("阅读时长(小时):", reading_hours)

# 打印变量的类型
print("book_title 的类型是:", type(book_title))
print("reading_hours 的类型是:", type(reading_hours))
书名: Python编程从入门到实践
阅读时长(小时): 15.5
book_title 的类型是: <class 'str'>
reading_hours 的类型是: <class 'float'>
  1. 命名判断:以下哪些是合法的 Python 变量名?哪些是不合法的?为什么?
    • my_var
    • 2nd_place
    • _internal
    • class
    • total-score
👉 点击查看参考答案

思路:根据命名规则(字母/数字/下划线组成、不以数字开头、不是关键字)进行判断。

  • my_var:合法。符合命名规则。
  • 2nd_place:不合法。变量名不能以数字开头。
  • _internal:合法。以下划线开头是允许的(通常有特殊含义,但语法上合法)。
  • class:不合法。class 是 Python 关键字,用于定义类。
  • total-score:不合法。变量名中不能包含减号 -,只能使用下划线 _。

常见错误

错误写法现象或报错原因正确写法
2name = "Tom"SyntaxError: invalid decimal literal变量名以数字开头,违反了命名规则。name2 = "Tom" 或 _2name = "Tom"
for = 5SyntaxError: invalid syntaxfor 是 Python 关键字,不能用作变量名。loop_count = 5
first-name = "Li"SyntaxError: cannot assign to expression here. Maybe you meant '==' instead of '='?变量名中包含非法字符减号 -,它被解释为减法运算符,左边成了表达式而不是变量名。first_name = "Li"
使用 name 和 Name 时混淆程序逻辑错误,但无报错Python 区分大小写,name 和 Name 是两个不同的变量。保持变量名大小写一致,并遵循命名惯例。

小结

  1. 变量是数据的名字,通过 变量名 = 值 创建,让我们能用简单的标签引用复杂的数据。
  2. Python 具有动态类型特性,变量类型由解释器自动推断,无需声明,且同一变量可重新赋值为不同类型(但不建议频繁这样做)。
  3. 使用 type(变量名) 可以随时查看变量当前指向的数据类型。
  4. 变量命名必须遵守规则:由字母、数字、下划线组成,不以数字开头,且不能是关键字。
  5. 良好的命名应见名知意,变量和函数名推荐使用小写字母加下划线(如 user_age),类名推荐使用大驼峰命名法(如 UserInfo)。
  6. Python 区分大小写,age 和 Age 是不同的变量。

📋 行动清单

  • 在代码编辑器中,尝试用错误的命名(如以数字开头、使用关键字)创建变量,观察产生的错误信息。
  • 定义一个变量,先后赋给它整数、字符串、浮点数,每次赋值后都用 print 和 type() 查看其值和类型的变化。
  • 为你身边的三样物品(如手机品牌、价格、购买年份)分别创建变量,并确保变量名清晰表达了其含义。

—— 小象教研组