Python-引用

161 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1. 变量的引用

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

  • 在Python中,变量数据是分开存储的
  • 数据保存在内存中的一个位置
  • 变量中保存着数据在内存中的地址
  • 变量中记录数据的地址,就叫做引用
  • 使用id()函数可以查看变量中保存数据所在的内存地址
  • a=1a=1,数据1相当于是一个小格子,变量a相当于是一个便签,将便签贴在小格子上。

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

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

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

运行结果如下所示:

image.png