User:Xyy23330121/Python/变量
变量是程序运行时储存数据的方式。
在 Python 中创建变量是简单的。比如,执行以下语句:
a = 0
一个名为 a
的变量就创建完成了,该变量被赋值为 0
,即该变量存储的数据为 0
。
如果需要调用该变量所存储的数据,只要使用变量名即可。比如:
print(a) #在屏幕上输出 a 的内容,本例中输出 0
b = a + 1 #用 a 的值参与加法运算。关于数学运算,参见之后的第三章。
print(b) #在屏幕上输出 b 的内容,本例中输出 1
运行以上程序的结果为:
0
1
并非任何名称都可以作为变量的名称,在给变量命名时要遵循一些命名规则。 Python 的变量名可以使用字母、下划线、数字,甚至可以使用中文作变量名。但是数字不能放在开头。以下四个名称都是合法的:
A=1 #使用大写字母
a=2 #使用小写字母,python的变量名称区分大小写
_a=3 #使用下划线(建议不要单独使用下划线)
_4=4 #使用数字,但数字不能放在开头
中文=5 #使用中文变量名
除此之外, Python 保留了一些名称作为代码中的关键字使用[1],这些关键字不能作为变量名。以下是关键字列表:
False |
assert |
continue |
except |
if |
nonlocal |
return
|
None |
async |
def |
finally |
import |
not |
try
|
True |
await |
del |
for |
in |
or |
while
|
and |
break |
elif |
from |
is |
pass |
with
|
as |
class |
else |
global |
lambda |
raise |
yield
|
请注意不要以这些关键字命名变量。由于关键字列表随着Python 版本更新可能会更新,对于对应的版本,可以查阅参考资料中的Python 文档[1]。
除上述查找 Python 文档之外,也可以使用以下 Python 代码来查阅关键字列表:
import 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']
本段代码用到了import
语句[2]。利用import
语句可以调用其他人写好的代码。我们称这种可以被调用的代码的组合为一个“模块”。这里调用的是 Python 内置的 keyword
模块。该模块内有一个列表 kwlist
,我们可以用 keyword.kwlist
的方式去访问已调用的 keyword
包中的列表 kwlist
。
除此之外,以下的方法也是可行的。
利用以下方法,可以同时导入多个模块:
import keyword, math, string
这等同于:
import keyword
import math
import string
import keyword as kw
print(kw.kwlist)
本方法给模块起了一个别名。良好的别名对于阅读代码以及写代码时都有帮助。
使用别名时,也可以同时导入多个:
import keyword as kw, math, string as st
from keyword import kwlist
print(kwlist)
如果不想输入模块名,且只需要用到模块中的少数几个内容,则可以单独只导入 kwlist
。
可以使用别名和进行多重导入:
from keyword import kwlist as kwl
print(kwl)
from math import ceil as up, floor as down, trunc
可以使用 *
来全部导入:
from keyword import *
print(kwlist)
关于 import 语句的更多说明以及使用方式,参见 Python 文档,这里不再赘述。
除上述的 a = 0
可以被用于给变量赋值之外,Python 还支持以下几种便捷的赋值方法。
Python 支持序列解包功能。从而可以进行以下操作:
a,b = 0,1 #等同于 a = 0 ,同时 b = 1
利用序列解包方法,可以简单对调两个变量的值:
a,b = b,a
以上代码等同于:
temp = a
a = b
b = temp
del temp
与序列解包相关的更多内容,参见之后的元组章节。
链式赋值会给多个变量赋相同的值。
a = b = 1 #等同于 b = 1 ,然后 a = b
a := 3 #等同于 a = 3
赋值表达式会给表达式中变量赋值,随后输出该变量的值。以下面代码为例:
b = (a := 3) + 1
括号内赋值表达式先进行计算,然后再计算括号外的加法。因此该代码等同于:
a = 3 #先计算括号内赋值表达式
b = a + 1 #赋值表达式将 a 传递到括号外,剩下的计算等同于这个