本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. 变量的引用
变量和数据都是保存在内存中的,在Python中函数的参数传递以及返回值都是靠引用传递的。
- 在Python中,变量和数据是分开存储的
- 数据保存在内存中的一个位置
- 变量中保存着数据在内存中的地址
- 变量中记录数据的地址,就叫做引用
- 使用
id()函数可以查看变量中保存数据所在的内存地址 - 如 ,数据1相当于是一个小格子,变量a相当于是一个便签,将便签贴在小格子上。
注:如果变量已经被定义,当给一个变量赋值的时候,本质上是修改了数据的引用。
- 变量不再对之前的数据引用
- 变量改为对新赋值的数据引用
2. 函数中的引用
- 在Python中,函数的实参/返回值都是靠引用来传递的。
- 调用函数传递实参的引用:本质上传递的是实参保存数据的引用,而不是实参保存的数据。
- 函数返回值传递引用:比如在函数内部定义一个字符串变量,将字符串变量返回,返回的是数据的引用,而不是数据本身。
def test(num):
print("在函数内部 %d 对应的内存地址是 %d" % (num, id(num)))
# 1)定义一个字符串变量
result = "hello"
print("函数要返回数据的内存地址是%d" % id(result))
# 2)将字符串变量返回,返回的是数据的引用,而不是数据本身
return result
# 1 定义一个数字的变量
a = 10
# 数据的地址本质上就是一个数字
print("a变量保存数据的内存地址是%d" % id(a))
# 2.调用test函数,本质上传递的是实参保存数据的引用,而不是实参保存的数据
# 注意:如果函数有返回值,但是没有定义变量接收
# 程序不会报错,但是无法获得返回结果
r = test(a)
print("%s的内存地址是%d" % (r, id(r)))
运行结果如下所示: