User:Xyy23330121/Python/变量

来自维基学院


变量是程序运行时储存数据的方式。

创建和使用变量[编辑 | 编辑源代码]

提示
如果读者有C语言或其他语言的基础,建议在学习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的变量名称区分大小写
_=3		#使用下划线
_4=4	#使用数字,但数字不能放在开头

关键字[编辑 | 编辑源代码]

除此之外, 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]

import 语句[编辑 | 编辑源代码]

关于列表
关于列表,参见之后的列表章节。

除上述查找 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 import[编辑 | 编辑源代码]

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
import keyword
print(keyword.kwlist)

赋值表达式[编辑 | 编辑源代码]

a := 3 #等同于 a = 3

赋值表达式会给表达式中变量赋值,随后输出该变量的值。以下面代码为例:

b = (a := 3) + 1

括号内赋值表达式先进行计算,然后再计算括号外的加法。因此该代码等同于:

a = 3     #先计算括号内赋值表达式
b = a + 1 #赋值表达式将 a 传递到括号外,剩下的计算等同于这个

参考资料[编辑 | 编辑源代码]

  1. 1.0 1.1 https://docs.python.org/zh-cn/3.12/reference/lexical_analysis.html#keywords
  2. 关于import语句的Python文档 https://docs.python.org/zh-cn/3.12/reference/simple_stmts.html#import