修订历史:
- 2024/09/21 初稿
变量
"Variables are containers for storing data values. "^[1]
"A Python variable is a name given to a memory location." ^[2]
A Python variable is a symbolic name that is a reference or pointer to an object. ^[3]
简单理解,变量就是一个符号名字,它引用或指向了内存中的某个位置或者说某个对象。
创建变量
Python 没有命令来声明变量。变量在你首次为它分配值的那一刻创建。
变量命名规则
- 必须以字母或下划线(
_
)开头 - 命名可由字母、数字和下划线组成
- 大小写敏感
- 尽量避免使用保留字命名
补充
- 3.9 版本的 python 保留字共有 36 个。
Python Keywords | |||
---|---|---|---|
False |
def |
if |
raise |
None |
del |
import |
return |
True |
elif |
in |
try |
and |
else |
is |
while |
as |
except |
lambda |
with |
assert |
finally |
nonlocal |
yield |
break |
for |
not |
__peg__parser |
class |
from |
or |
**async ** |
continue |
global |
pass |
await |
- 查看
python
保留字的方法
python
Python 3.9.6 (default, Feb 3 2024, 15:58:27)
[Clang 15.0.0 (clang-1500.3.9.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', '__peg_parser__', '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']
>>> len(keyword.kwlist)
36
>>> del = 37 # 如果创建与保留字同名的变量,会导致错误
File "<stdin>", line 1
del = 37
^
SyntaxError: invalid syntax
>>>
python 的特殊变量赋值
相比其他编程语言,比如 C
和 C++
。Python
支持链式赋值和多变量赋值
python
# 链式赋值
>>> a = b = c = 60
>>> print(a, b, c)
60 60 60
# 通过元组方式进行多变量赋值
>>> a, b, c = 31, 34, 50
>>> print(a, b, c)
31 34 50
深入理解 Python
中的变量
在前面 Python
的定义中,我们指出 Python
是引用或指向某个对象的符号名称。
实际上,在Python中,当你给变量赋值时,你实际上是在创建一个对象,并将变量指向这个对象。且每个创建的对象都会被赋予一个独一无二的数字来标识它。这个数字保证了在对象生命周期重叠的任何时期,不会有两个对象拥有相同的标识符。一旦对象的引用计数降至零,并且它被垃圾回收。
Python内置的id()
函数返回对象的整数标识符。使用id()
函数,你可以验证两个变量是否确实指向同一个对象。
python
>>> a = 988
>>> b = a
>>> id(a)
4300386864
>>> id(b)
4300386864
变量可以指向(或引用)内存中的一个对象。当一个变量被赋值为另一个变量时,新变量将指向同一个对象。上面的示例说明了变量赋值和对象引用在编程中是如何工作的,以及如何通过内存地址来验证变量是否指向相同的对象。
备注^[4]
Python
解释器会根据整数的范围采取不同的优化策略。对于-5到256之间的整数,Python会预先创建对象并在需要时重用,这样可以提高效率并减少内存占用。这意味着,当你给不同的变量赋值为 <math xmlns="http://www.w3.org/1998/Math/MathML"> [ − 5 , 256 ] [-5, 256] </math>[−5,256] 这个范围内的整数时,它们实际上会指向同一个对象。如果给变量赋的值不在该范围内,他们则会指向不同的对象。- 多变量赋值采取了与单变量赋值不一样的策略;
python
>>> a, b = 988, 988
>>> id(a), id(b)
(4300389296, 4300389296)
>>> a = 988
>>> b = 988
>>> id(a)
4300387472
>>> id(b)
4300388880
>>> a, b = 98, 98
>>> id(a), id(b)
(4298364304, 4298364304)
>>> a = 98
>>> b = 98
>>> id(a)
4298364304
>>> id(b)
4298364304