变量就是贴标签的抽屉
你有一堆东西要用很多次,每次都重新说一遍太累了。所以你找个抽屉把它装进去,在抽屉上贴个标签。下次要用,喊标签的名字就行。
name = "小明"
age = 18
print(name) # 小明
print(age) # 18
print(name, age) # 小明 18
name = "小明" 读作:把 "小明" 装进叫 name 的抽屉里。
等号不是"等于"
这是初学者最大的坑。数学里 x = 5 是在陈述一个事实;编程里 x = 5 是一条命令:"去做这件事——把 5 放进 x"。
所以下面这行在数学上是荒谬的,在编程里却完全正常:
count = 0
count = count + 1
print(count) # 1
执行顺序永远是先算右边,再放进左边:右边 count + 1 算出 0 + 1 = 1,然后把 1 装进 count。老值被覆盖了。
count = count + 1 太常用,所以有个简写:count += 1。两者完全一样。
起名字的规矩
硬规矩(违反会报错):
- 只能用字母、数字、下划线,且不能用数字开头。
2name错,name2对。 - 区分大小写。
Name和name是两个不同的抽屉。 - 不能用 Python already 占用的词,比如
print、if、for、class。
软规矩(不会报错,但请照做):
- 用有意义的名字。
a = 18三天后你不知道它是什么;user_age = 18一眼就懂。 - 多个单词用下划线连接:
total_price、user_name。这是 Python 社区的共识写法。
抽屉里能装什么
四种最常用的:
title = "灯塔编程" # 字符串 str —— 文字
count = 42 # 整数 int —— 没有小数点的数
price = 19.9 # 浮点数 float —— 有小数点的数
is_free = True # 布尔值 bool —— 只有 True / False 两个取值
不确定某个抽屉里装的是什么类型?问它:
print(type(price)) # <class 'float'>
f-string:把变量塞进句子里
拼接文字最舒服的写法,是在引号前加一个 f,然后用 {} 挖坑:
name = "小明"
age = 18
print(f"{name}今年{age}岁") # 小明今年18岁
没有 f 的话,{name} 就只是四个普通字符,会原样打印出来。忘记写 f 是超高频笔误,看到输出里出现花括号,先检查这里。
10 秒自测
x = 10
y = x
x = 99
print(y)
y 是多少?答案是 10。y = x 那一刻,把 x 当时的值 10 复制进了 y;后来 x 换成 99,跟 y 再无关系。抽屉是两个独立的抽屉。