给女朋友的 Python 教程——变量
date
Apr 26, 2024
slug
A-Python-tutorial-for-girlfriend-005-variable
status
Published
tags
Python
summary
type
Post
给每一条河每一座山取一个温暖的名字
在上一节中,我们看到的是一目了然的数据,比如
'string'
, 1000
, 3.14
,这些字符串或者数字都是字面值表示的常量。在实际的编程中,我们需要给类似这些字面值的对象一个名字,这就引入了「变量」。Python 通过赋值语句,将变量名称绑定到特定值或这些值的表达式,最简单的赋值语句就是通过
=
,将变量名与值或表达式的值连接起来,这个变量名就是一个变量,比如:这里
s
就是一个变量,它的值是 'Assign this string to varible s'
。标签与盒子
简单的理解,可以将值看成一个装着它的值的盒子,将「变量」视为盒子的一个标签:

x
这时,你对
x
的操作也可以看作是对这个盒子的操作,当然你也可以将 x
分配给其他的盒子,这时候 x
就改换门庭,和原来的盒子没有关系了:
x
是另一个盒子了赋值语句
在 Python 中,你通过
=
,将变量与值连接起来,这就是赋值语句,我们就可以愉快的来使用变量了:这里的
r
, pi
都是变量,利用变量的运算 pi * r * r
计算半径为 r
的圆面积,如果半径变成 15 呢?那就通过赋值语句将 r
与 15
联系起来,将变量 area
与 pi * r * r
联系起来:既然将「变量」视为标签,同现实中一样,一个盒子可以有多个标签,一个值可以有多个变量名,下面的
x
, y
, z
的值是一样的,Python 将它们指向了同一个地方:
x
, y
, z
指向了同一个字符串增强赋值语句
与上述普通赋值语句不同,增强赋值语句将
+
, -
, *
, /
等二元运算和赋值语句合为一体,将运算和赋值放在一起:可以看到,
i += 11
类似 i = i + 11
(当然,它们是不一样的,但是现在就这么理解)。赋值操作符和增强赋值操作符如下表:
操作符 | 描述 | 语法 |
= | 将表达式右侧的值赋给左侧的操作数 | x = y + z |
+= | 加和赋值:将右侧操作数与左侧操作数相加,然后赋给左侧操作数 | a += b |
-= | 减去并赋值:从左操作数中减去右操作数,然后赋给左操作数:如果两个操作数相等,则为真 | a -= b |
*= | 乘以并赋值:将右操作数乘以左操作数,然后赋给左操作数 | a *= b |
/= | 除以并赋值:将左操作数除以右操作数,然后赋给左操作数 | a /= b |
%= | 取模并赋值:使用左右操作数取模,并将结果赋给左操作数 | a %= b |
//= | 除法(地板除)并赋值:将左操作数除以右操作数,然后将值(地板除法)赋给左操作数 | a //= b |
**= | 幂运算并赋值:使用操作数计算指数(幂),并将值赋给左操作数 | a **= b |
&= | 对操作数执行位与操作,并将值赋给左操作数 | a &= b |
|= | 对操作数执行位或操作,并将值赋给左操作数 | a |= b |
^= | 对操作数执行位异或操作,并将值赋给左操作数 | a ^= b |
>>= | 对操作数执行位右移操作,并将值赋给左操作数 | a >>= b |
<<= | 对操作数执行位左移操作,并将值赋给左操作数 | a <<= b |
变量命名规则
哪些名字可以做变量?给变量的名字有一些基本的规则,违反这些规则会出现错误:
- 变量名可以由大小写字母 A 至 Z、下划线
_
、数字 0 至 9、
- 不能以数字开头只能以字母或
_
开头
- 变量名区分大小写,比如
Name
与name
是两个不同的变量
- 变量名不能是关键字。
比如,关键字
if
, 数字开头的3x
无法作为变量名,会引起 SyntaxError
语法错误,而_3x
可以作为变量名:变量中,单独的下划线
_
有着特殊的含义,它代表着上一个计算的结果: