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

参考资料

  • 1\] [www.w3schools.com/python/pyth...](https://link.juejin.cn?target=https%3A%2F%2Fwww.w3schools.com%2Fpython%2Fpython_variables.asp "https://www.w3schools.com/python/python_variables.asp")

  • 3\] [realpython.com/python-vari...](https://link.juejin.cn?target=https%3A%2F%2Frealpython.com%2Fpython-variables%2F "https://realpython.com/python-variables/")

相关推荐
悠悠小茉莉23 分钟前
Win11 安装 Visual Studio(保姆教程 - 更新至2025.07)
c++·ide·vscode·python·visualstudio·visual studio
m0_6256865538 分钟前
day53
python
Real_man1 小时前
告别 requirements.txt,拥抱 pyproject.toml和uv的现代Python工作流
python
站大爷IP2 小时前
Python文件操作的"保险箱":with语句深度实战指南
python
运器1232 小时前
【一起来学AI大模型】算法核心:数组/哈希表/树/排序/动态规划(LeetCode精练)
开发语言·人工智能·python·算法·ai·散列表·ai编程
巴里巴气4 小时前
selenium基础知识 和 模拟登录selenium版本
爬虫·python·selenium·爬虫模拟登录
19894 小时前
【零基础学AI】第26讲:循环神经网络(RNN)与LSTM - 文本生成
人工智能·python·rnn·神经网络·机器学习·tensorflow·lstm
JavaEdge在掘金4 小时前
Redis 数据倾斜?别慌!从成因到解决方案,一文帮你搞定
python
ansurfen4 小时前
我的第一个AI项目:从零搭建RAG知识库的踩坑之旅
python·llm
前端付豪5 小时前
20、用 Python + API 打造终端天气预报工具(支持城市查询、天气图标、美化输出🧊
后端·python