自学Python第三课:变量、数据类型、注释

什么是变量?

变量就是一个贴了标签的盒子。你把数据(数字、文字等)放进去,以后用标签名就能找到它、用上它。

每个变量的创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

等号= 用来给变量赋值。

等号= 运算符左边是一个变量名,等号= 运算符右边是存储在变量中的值。

a = 10

读作:把 10 放进名叫 a 的盒子里。以后写 a,Python 就去盒子里把 10 拿出来用:

print(a)   # 输出 10
在程序中可以随时修改变量的值,而Python始终记录变量的最新值。

三个关键点

① 变量名 = 标签,可以随便起(但别太随便)

name = "小明"     # 文字用引号
age = 18          # 数字不用引号
price = 9.9       # 小数也行

② 盒子里的东西能换

x = 5
x = 10      # 现在 x 是 10 了,老的 5 被覆盖
print(x)    # 10

③ 一个变量可以"复制"给另一个

a = 10      # 这个a = 10是文章最开始写的那个
b = a       # 把 a 盒子里的值(10) 复制一份放进 b
print(b)    # 10
注意:是复制值,不是 b 指向 a。改了 a,b 不会变。
a = 10
b = a
a = 99
print(b)    # 还是 10,因为 b 存的是当时的值

让我们做个生活类比:变量就像带名字的抽屉name 抽屉放"小明",age 抽屉放 18,你想知道他几岁,就"打开 age 抽屉"看一眼。

为什么要有变量?

如果没有变量,你每次都得重写死数据,变量就是编程里最最基础的积木。

# 没变量:每次都写 18
print(18)
if 18 > 10: ...
# 万一他明年 19 了,你得改 N 个地方

# 有变量:改一处就行
age = 19
print(age)
if age > 10: ...

多个变量赋值

Python 允许你同时为多个变量赋值。多个变量赋值这块 Python 有好几个"偷懒"写法。

① 一行给多个变量赋值(最常用)

a, b, c = 1, 2, 3
print(a, b, c)   # 1 2 3

左边三个名字,右边三个值,按顺序一一对应装盒。比写三行省事多了。

② 多个变量赋同一个值

x = y = z = 0
print(x, y, z)   # 0 0 0

适合初始化计数器、开关之类的。注意这里用的是= 号,不是 号。

③ 交换两个变量(超好用)🌟

别的语言要借个临时变量,Python 一行搞定,不用临时变量,干净利落。

a = 5
b = 10
a, b = b, a    # 交换!
print(a, b)    # 10 5

④ 拆包(unpacking)—— 从列表/元组里取值(看不懂没关系)

nums = [10, 20, 30]
x, y, z = nums
print(x, y, z)   # 10 20 30

还能用 * 把剩下的打包:

first, *rest = [1, 2, 3, 4, 5]
print(first)   # 1
print(rest)    # [2, 3, 4, 5]


简单数据类型

数据类型这块是地基,说个核心概念:每个数据都有自己的"类型"——Python 得知道它是数字还是文字,才能决定能做什么运算。用 type() 可以随时查:

print(type(10))        # <class 'int'>  整数
print(type("你好"))     # <class 'str'>  字符串

数据类型有哪些?

1️⃣ int —— 整数 (就是没有小数点的数字,正负都行)

age = 18
count = -5
big = 1000000

2️⃣ float —— 浮点数(带小数,哪怕写成 10.0 也是 float,不是 int)

price = 9.9
pi = 3.14159

3️⃣ str —— 字符串(必须用引号包起来,单双引号都行,还能用三引号写多行

name = "小明"
msg = 'Hello'
poem = """床前明月光
疑是地上霜"""

4️⃣ bool —— 布尔值(只有两个值:True(真)和 False(假),首字母大写)

is_student = True
has_money = False
它其实是 int 的亲戚:True == 1False == 0,但别混着用,容易把自己绕晕。

5️⃣ None —— 空值(什么都没有,表示"没有值 / 还没赋值")

result = None

数据类型可转换

不同类型能互相转:

int("123")        # 123  字符串→整数
float("3.14")     # 3.14 字符串→浮点
str(100)          # "100" 数字→字符串

 为什么重要?

不同类型的"能耐"不一样:

  • 数字能加减乘除
  • 字符串能拼接、切片("hello"[0] 得 "h"
  • 布尔值用来做判断(if is_student:

搞混类型是最常见的报错来源,比如 "18" + 1 会炸(文字不能加数字),得先 int("18") + 1

举例说明

点击运行后,提示错误:

TypeError: can only concatenate str (not "int") to str

a 是字符串 "100"b 是整数 20,Python 不会自动把文字当数字加,所以报 unsupported operand type(s) for +: 'int' and 'str'。这就是"类型不匹配"最经典的报错。

变量的命名和使用

在 Python 中使用变量时,需要遵守一些规则和指南。违反这些规则会引发错误,指南旨在让你编写的代码更容易阅读和理解。

  • 变量名只能包含数字、字母、下划线。变量名可以字母或下划线打头,但不能以数字打头。例如,将变量命名为 a_1,但不能将其命名为 1_a 。
  • 变量名不能包含空格,但可以使用下划线来分割其中的单词。例如,变量名 a_b 可行,但变量名 a b 会引发错误。
  • 不要将 Python 关键字和函数名用作变量名,不要使用 Python 保留用于特殊用途的单词,如 print 。
  • 变量名应既简短且具有描述性。例如:name 比 n 好,student_name 比 s_n 好等等。
  • 慎用小写字母l和大写字母O,因为它们可能会被人看错成数字1和0。

注释

注释就是写给人看的“小纸条”,Python 运行时会直接跳过它、当没看见。最早那段 name = "小明" # 文字用引号 里 # 后面的那句,就是注释。
注释分为单行注释和多行注释。

单行注释:#

最常用, # 号后面整行都是注释。

# 这是一行注释,Python 不执行

多行注释

多行注释 Python 跟别的语言不太一样,重点先说:Python 没有像 C / Java 那种 /* ... */ 的"块注释"符号。 所以"多行注释"是靠约定实现的,有两招。

招式一:每行都加 #(最正统)

# 这是第一行说明
# 这是第二行说明
# 这是第三行说明
x = 10

一行一个 #,本质还是多个单行注释拼起来。

招式二:三引号 ''' 或 """

'''
这是一段
可以多行的
说明文字
'''

但严格说,这不是"注释",是一个字符串。Python 会真的创建一个字符串、然后因为没被用到就扔掉。通常无害,所以大伙儿拿它当多行说明用。

正确用法(推荐):放在函数 / 文件最开头当"说明文档"(docstring)

def add(a, b):
    '''把两个数相加并返回结果'''
    return a + b
不推荐的用法:在代码正中间随便塞三引号当注释——因为它是真字符串,极少数情况会捣乱(比如不小心成了返回值、或影响代码块结构)。所以正文里要注释,老老实实用 #

一句话总结就是:多行注释 = 每行 #(配合 Ctrl + / 批量加);三引号留给函数/文件的说明文档用。

最后在举个例子,把今天学习的内容整合一下。

跑出来应该是这样的。

多变量赋值type_filter, pref_filter, page = ... 一行搞定,打印正常

数据类型type(total).__name__ 显示 float,因为 9.9 * 3 是小数

你踩过的坑已经会绕了int(a) + b 得 120,不是 "100100"

交换变量x, y = y, x 后变成 2 1

None / boolNone 和 True 都正常打印

注意看 总价:29.700000000000003 —— 理论上 9.9 × 3 = 29.7,电脑却打出一长串尾巴。这是浮点数精度问题(计算机用二进制存小数,像 1/3 除不尽一样会有误差)。以后看到这种"多出来的小数",别慌,不是你写错了。正式算钱时可以用 round(29.7, 2) 保留两位小数,或改用 decimal 模块。
上一篇 自学Python第二课:安装PyCharm代码编辑器
下一篇 自学English第一课:从元辅音开始

与「遗落时光」交流

看完这篇有收获?欢迎联系作者,一起聊技术、提建议~

公众号 Q 加QQ 加微信 发邮件