今天刚刚学,我大概是这样子理解的
1. 简单的赋值表达式
首先来看这个表达式
a=1
print("a 变量保存数据的内存地址是 %d" % id(a))
print("数据 1 的内存地址是 %d" % id(1))
b=a
print("b 变量保存数据的内存地址是 %d" % id(b))
运行结果
a 变量保存数据的内存地址是 140706720674064
数据 1 的内存地址是 140706720674064
b 变量保存数据的内存地址是 140706720674064
注意:不同电脑上运行结果的地址可能不一样,但这三行的数字一定会是一样的
将数据1赋给变量a,变量a相当于便利贴,一个数据可以贴很多便利贴,即数据可以赋值给多个变量
对于 “b = a ” ,可以理解为,把数据 1 的内存地址给了变量b。
使用变量b时,实际上是通过内存地址找到了 数据 1 ,并使用他
2.函数中数据的传递
def test(num):
print("在函数内部 %d 对应的内存地址是 %d" % (num,id(num)))
#1.定义一个数字的变量
a=100
# 数据的地址本质上就是一个数字
print("a 变量保存数据的内存地址是 %d" % id(a))
# 2.调用 test 函数
test(a)
调用函数,本质上传递的是实参保存数据的引用[即在内存中的地址],而不是实参保存的数据
运行结果:
a 变量保存数据的内存地址是 140706720677232
在函数内部 100 对应的内存地址是 140706720677232
3.函数中返回数据的传递
def test(num):
print("在函数内部 %d 对应的内存地址是 %d" % (num,id(num)))
# 1.定义一个字符串变量
result = "hello"
print("函数要返回数据的内存地址是 %d " % id(result))
# 2.将字符串变量返回,返回的是数据的引用,而不是数据本身
return result
#1.定义一个数字的变量
a=10
r = test(a)
print("%s 的内存地址是 %d" % (r,id(r)))
注意:如果函数有返回值,但是没有定义变量接收
程序不会报错,但是无法获得返回结果