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

参考资料

相关推荐
cuber膜拜38 分钟前
jupyter使用 Token 认证登录
ide·python·jupyter
张登杰踩2 小时前
pytorch2.5实例教程
pytorch·python
codists2 小时前
《CPython Internals》阅读笔记:p353-p355
python
Change is good2 小时前
selenium定位元素的方法
python·xpath定位
Change is good2 小时前
selenium clear()方法清除文本框内容
python·selenium·测试工具
大懒猫软件7 小时前
如何运用python爬虫获取大型资讯类网站文章,并同时导出pdf或word格式文本?
python·深度学习·自然语言处理·网络爬虫
XianxinMao8 小时前
RLHF技术应用探析:从安全任务到高阶能力提升
人工智能·python·算法
查理零世9 小时前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法
汤姆和佩琦10 小时前
2025-1-21-sklearn学习(43) 使用 scikit-learn 介绍机器学习 楼上阑干横斗柄,寒露人远鸡相应。
人工智能·python·学习·机器学习·scikit-learn·sklearn
HyperAI超神经10 小时前
【TVM教程】为 ARM CPU 自动调优卷积网络
arm开发·人工智能·python·深度学习·机器学习·tvm·编译器