Python中有关变量,函数与参数相关内容总结(一)

本文深入探讨Python中变量的定义、引用及数据类型,解析变量与数据在内存中的存储方式,以及不可变与可变类型的区别,通过实例展示变量赋值与修改的本质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Python中的变量

1.1 变量定义

  • 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
  • 等号(=)用来给变量赋值
    • = 左边是一个变量名
    • = 右边是存储在变量中的值
变量名 = 值

变量定义之后,后续就可以直接使用了

在定义变量时不需要指定变量的类型, 解释器会自动根据赋值语句右边值的类型给变量指定类型。

1.2 变量的引用

  • 变量 和 数据 都是保存在 内存 中的
  • 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的

在 Python 中

  • 变量 和 数据 是分开存储的
  • 数据 保存在内存中的一个位置
  • 变量 中保存着数据在内存中的地址
  • 变量 中 记录数据的地址,就叫做 引用
  • 使用 id() 函数可以查看变量中保存数据所在的 内存地址

注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用

  • 变量 不再 对之前的数据引用
  • 变量 改为 对新赋值的数据引用

1.3 可变和不可变类型

  • 不可变类型,内存中的数据不允许被修改:

    • 数字类型 intboolfloatcomplexlong(2.x)
    • 字符串 str
    • 元组 tuple
  • 可变类型,内存中的数据可以被修改:
    • 列表 list
    • 字典 dict

注意:字典的 key 只能使用不可变类型的数据

  1. 可变类型的数据变化,是通过 方法 来实现的
  2. 如果给一个可变类型的变量,赋值了一个新的数据,引用会修改
    • 变量 不再 对之前的数据引用
    • 变量 改为 对新赋值的数据引用

有了以上知识之后我们可以在ipython交互式的shell中进行一个验证:

In [1]: a = 1

In [2]: b = 2

In [3]: id(a)
Out[3]: 10910400

In [4]: id(1)
Out[4]: 10910400

In [5]: id(b)
Out[5]: 10910432

In [6]: id(2)
Out[6]: 10910432

In [7]: b = 1

In [8]: a = 2

In [9]: id(a)
Out[9]: 10910432

In [10]: id(b)
Out[10]: 10910400

根据这个执行结果,可以猜测,当Python代码中出现了新的数字(不可变)时,会为这个数字分配一个内存空间(下面用小盒子比喻),而变量则是引用了这个内存空间。

这一点与C不同,在C中我们定义变量时要先指定类型,这时候C编译器会为我们开辟一个内存空间,这个内存空间会有一个地址,并且里面存着变量的值。

我们可以把C中的变量理解为我们为这个内存空间起的一个“名字”,当修改变量的值的时候,地址不会发生变化,变化的是里面存储的值。

而在Python中,我们可以把变量理解为一个“标签”,这个“标签”在赋值时被贴到了一个“小盒子”上,而“小盒子”里面存储的就是实际的数据(有一点类似C里的指针,但不完全相同),当修改变量的值的时候(使用赋值语句),我们并不会修改原来的“小盒子”里的内容也就是10910400这个地址里面的值,而是会把贴在10910400这个“小盒子”上的标签 a 撕下来,贴在10910432这个“小盒子”上。

以上的论述可以用以下的图片来帮助我们理解:

python中刚开始赋值的时候

修改值之后 

而在C中,刚开始赋值的时候

修改值之后

以上内容仅供参考,如有错误还望指证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值