当前位置 : 主页 > 编程语言 > python >

Python变量

来源:互联网 收集:自由互联 发布时间:2022-07-05
仅用学习参考 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在内存中的 在​​Python​​ 中函数 的 参数传递以及返回值都是靠引用传

仅用学习参考


Python变量_内存地址


目标

  • 变量的引用
  • 可变和不可变类型
  • 局部变量和全局变量

01. 变量的引用

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


1.1 引用的概念

在 ​​Python​​ 中

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

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

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


1.2 ​​变量引用​​ 的示例

在 ​​Python​​ 中,变量的名字类似于 便签纸 贴在 数据 上

  • 定义一个整数变量​​a​​​,并且赋值为​​1​​

代码

图示

a = 1

Python变量_调用函数_02

  • 将变量​​a​​​ 赋值为​​2​​

代码

图示

a = 2

Python变量_调用函数_03

  • 定义一个整数变量​​b​​​,并且将变量​​a​​​ 的值赋值给​​b​​

代码

图示

b = a

Python变量_数据_04

变量 ​​b​​​ 是第 2 个贴在数字 ​​2​​ 上的标签

1.3 函数的参数和返回值的传递

在 ​​Python​​ 中,函数的 实参/返回值 都是是靠 引用 来传递来的

​​id()​​ 函数用于获取对象的内存地址。

In [14]: def test(num):
...: print("-" * 50)
...: print("%d 在函数内的内存地址是 %x" % (num,id(num)))
...: result = 100
...: print("返回值%d 在内存中的地址是 %x" % (result,id(result)))
...: print("-" * 50)
...: return result
...:

In [15]: a = 10

In [16]: print("调用函数前 内存地址是 %x" % id(a))
调用函数前 内存地址是 5156110

In [17]: r = test(a)
--------------------------------------------------
10 在函数内的内存地址是 5156110
返回值100 在内存中的地址是 5156830
--------------------------------------------------

In [18]: print("调用函数后 实参内存地址是 %x" % id(a))
调用函数后 实参内存地址是 5156110

In [19]: print("调用函数后 返回值内存地址是 %x" % id(r))
调用函数后 返回值内存地址是 5156830

In [21]: name = "蓝利群"

In [22]: id(name)
Out[22]: 113436016L

02. 可变和不可变类型

  • 不可变类型,内存中的数据不允许被修改:
  • 数字类型​​int​​​,​​bool​​​,​​float​​​,​​complex​​​,​​long(2.x)​​
  • 字符串​​str​​
  • 元组​​tuple​​
  • 可变类型,内存中的数据可以被修改:
  • 列表​​list​​
  • 字典​​dict​​

a = 1
a = "hello"
a = [1, 2, 3]
a = [3, 2, 1]demo_list = [1, 2, 3]

print("定义列表后的内存地址 %d" % id(demo_list))

demo_list.append(999)
demo_list.pop(0)
demo_list.remove(2)
demo_list[0] = 10

print("修改数据后的内存地址 %d" % id(demo_list))

demo_dict = {"name": "小明"}

print("定义字典后的内存地址 %d" % id(demo_dict))

demo_dict["age"] = 18
demo_dict.pop("name")
demo_dict["name"] = "老王"

print("修改数据后的内存地址 %d" % id(demo_dict))

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


Python变量_内存地址_05



关注微信公众号,回复【资料】、Python、PHP、JAVA、web,则可获得Python、PHP、JAVA、前端等视频资料。


网友评论