变量

变量及其赋值#

在编程时经常要处理数据,如数字、字符串等,既可以直接使用这些数据,也可以把数据保存在变量中,以方便以后使用。

变量(variable)
存放数据值的容器。数据是存放在内存中的,变量相当于这块内存的名字。变量名用标识符表示。
标识符(identifier)
编程时使用的名字,用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。

在 Python 中,通过直接赋值即可创建各种类型的变量(Python 是动态类型语言,不像其他静态类型语言那样需要预先显式声明变量名及其类型),使用等号 = 给变量赋值。如下所示:

x = 33  # x 是一个整型变量
print(x, type(x))  # 33 <class 'int'>

url = "https://zimo.net/aqmn/"  # url 是一个字符串变量
print(url, type(url))  # https://zimo.net/aqmn/ <class 'str'>

is_ready = True
print(is_ready, type(is_ready))  # True <class 'bool'>

上例中,type() 是内置的函数,用于返回变量类型。

一个变量可以被重新赋予不同类型的值(动态类型语言的特点):

x = 33  # x 是一个整型变量
x = False  # x 现在变为一个布尔类型变量

可以同时给多个变量赋值:

# 多变量赋值
tomato, pumpkin, pepper = '西红柿', '南瓜', '辣椒'
print(tomato, pumpkin, pepper)  # 西红柿 南瓜 辣椒

# 链式赋值,三者指向内存中的同一对象
a = b = c = 33
print(a, b, c)  # 33 33 33

变量值互换:

x, y = 33, 44

# 常规方法
temp = x
x = y
y = temp
print(x, y)

# 利用多变量赋值快速交换两个变量的值
x, y = y, x
print(x, y)

变量的命名#

首先,变量名必须是一个合法的标识符,这要求(必须遵守):

  • 只能包含字母(A‐Z 和 a-z)、数字(0-9)和下划线 _;(Python 3.x 中变量名支持统一码 Unicode,因此可以使用更多的字符,如可以包含汉字,但不建议使用汉字)
  • 不能以数字开头;
  • 不能包含空格;(一般使用下划线来分隔其中的单词)
  • 不能使用保留字;(见下页)

注意标识符是区分大小写的,因此 ageAgeAGE 是三个不同的标识符。

保留字在 Python 中也称关键字,是被编程语言内部定义并保留使用的标识符,在编程时不能定义与保留字相同的标识符。目前 Python 中有 35 个保留字:

False      await      else       import     pass
None       break      except     in         raise
True       class      finally    is         return
and        continue   for        lambda     try
as         def        from       nonlocal   while
assert     del        global     not        with
async      elif       if         or         yield

Python 的变量命名习惯:

  • 仅使用 ASCII 字母(A‐Z 和 a-z)、数字(0-9)和下划线 _,不要使用中文,也不要使用拼音;
  • 变量名应既简短又具有描述性;
  • 不要和作用域内的其他函数(包括 Python 内部函数)重名;
  • 使用蛇形命名法(snake_case):所有单词皆小写,单词之间以下划线 _ 分割。

请判断下面变量名称是否合法,以及是否符合习惯用法:

变量命名示例
变量名 评价 变量名 评价
if 不合法:为保留字 Age 合法:但不是全小写
user_age 合法:很好 2nd_member 不合法:以数字开头
True 不合法:为保留字 小老鼠 合法:但包含非 ASCII 字符
input 合法:但和函数同名 xiaolaoshu 合法:但最好不要用拼音
d 合法:但太短,意义不明 i 合法:在循环中习惯用此变量
StudentID 合法:但不是蛇形命名法 sum 合法:很好
$diff 不合法:包含特殊字符 point1 合法:很好
small-cat 不合法:包含特殊字符 _num 合法:仅在某些场合下这样用
变量和数据类型基本数据类型