Python基础03 | 变量和函数

修订历史:

  • 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 没有命令来声明变量。变量在你首次为它分配值的那一刻创建。

变量命名规则

  • 必须以字母或下划线(_)开头
  • 命名可由字母、数字和下划线组成
  • 大小写敏感
  • 尽量避免使用保留字命名

补充

  1. 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
  1. 查看 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 的特殊变量赋值

相比其他编程语言,比如 CC++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

参考资料

相关推荐
KevinRay_24 分钟前
Python超能力:高级技巧让你的代码飞起来
网络·人工智能·python·lambda表达式·列表推导式·python高级技巧
Captain823Jack1 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
资源补给站1 小时前
大恒相机开发(2)—Python软触发调用采集图像
开发语言·python·数码相机
Captain823Jack1 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
PieroPc2 小时前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化
VinciYan3 小时前
基于Jenkins+Docker的自动化部署实践——整合Git与Python脚本实现远程部署
python·ubuntu·docker·自动化·jenkins·.net·运维开发
测试老哥3 小时前
外包干了两年,技术退步明显。。。。
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
終不似少年遊*3 小时前
美国加州房价数据分析01
人工智能·python·机器学习·数据挖掘·数据分析·回归算法
如若1233 小时前
对文件内的文件名生成目录,方便查阅
java·前端·python
西猫雷婶4 小时前
python学opencv|读取图像(二十一)使用cv2.circle()绘制圆形进阶
开发语言·python·opencv