修订历史:
- 2024/09/21 初稿
- 主页链接:hydro.ac/d/datawhale…
变量
"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 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 支持链式赋值和多变量赋值
# 链式赋值
>>> 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()函数,你可以验证两个变量是否确实指向同一个对象。
>>> a = 988
>>> b = a
>>> id(a)
4300386864
>>> id(b)
4300386864
变量可以指向(或引用)内存中的一个对象。当一个变量被赋值为另一个变量时,新变量将指向同一个对象。上面的示例说明了变量赋值和对象引用在编程中是如何工作的,以及如何通过内存地址来验证变量是否指向相同的对象。
备注^[4]
Python解释器会根据整数的范围采取不同的优化策略。对于-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