概念
注: 如果变量已经被定义,当给一个变更 重新赋值的时候,本质上是 修改了数据的引用
**示例
**
a=1
print(id(a))
print(id(1))
b=a
print(id(b))
a=2
print(id(a))
输出结果:从这里面可以看出 前三个的内存地址是一样的
**函数的参数传递与返回值的引用
**
def test(num):
print("传递的值是:%d,内存地址是:%d" %(num,id(num)))
result="test"
print("返回的值是:%s,内存地址是:%d" %(result,id(result)))
return result
a=1
print("需要传递的参数的值是:%d,内存地址是:%d"%(a,id(a)))
ss=test(a)
print("调用函数获取的返回值是:%s,内存地址是:%d" %(ss,id(ss)))
**输出结果
**
结论:从结果中可得知,在调用函数时,传入的变量,实际上是将变量的引用内存地址 传递进去了。函数在返回时,同样是将变量对应的 引用 返回出来了
示例
# 不可变数据类型
a=1
print("内存地址是:%d" %id(a))
a=2
print("内存地址是:%d" %id(a))
#可变数据类型
b=[1,2,3]
print("内存地址是:%d" %id(b))
b.append(4)
print("值是:%s,内存地址是:%d" %(b,id(b)))
#如果重新用 = 赋值,则会新建一块内存地址
b=[]
print("新内存地址是:%d" %id(b))
输出结果
结论:
**哈希(hash)
**
# 对同一个不可变的数据类型,hash 两次,得到的结果是一样的
print(hash("123"))
print(hash("123"))
输出结果
全部0条评论
快来发表一下你的评论吧 !