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/")

相关推荐
带娃的IT创业者20 分钟前
如何开发一个教育性质的多线程密码猜测演示器
网络·python·算法
luckys.one6 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
大翻哥哥8 小时前
Python 2025:量化金融与智能交易的新纪元
开发语言·python·金融
zhousenshan9 小时前
Python爬虫常用框架
开发语言·爬虫·python
IMER SIMPLE9 小时前
人工智能-python-深度学习-经典神经网络AlexNet
人工智能·python·深度学习
CodeCraft Studio9 小时前
国产化Word处理组件Spire.DOC教程:使用 Python 将 Markdown 转换为 HTML 的详细教程
python·html·word·markdown·国产化·spire.doc·文档格式转换
专注API从业者10 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
java1234_小锋10 小时前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落11 小时前
Python学习之装饰器
开发语言·python·学习
XiaoMu_00111 小时前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游