首页 > 解决方案 > 为什么这个函数对于同一个变量但是同一个地址有不同的值?

问题描述

def func(t):
    t = 5
    print('inside function', t)
    print('inside function address = ', id(hex(t)))

x = 3
func(x)
print('outside function',x)
print('outside function address = ', id(hex(x)))

这打印

inside function 5
inside function address =  31255648
outside function 3
outside function address =  31255648

我的理解是在没有赋值的函数中引用的变量将使用其范围之外的变量。但是如果函数有赋值,那么它将在内存的新空间中创建一个新变量并在那里赋值。

为什么函数 id 找到的是参数的原始地址,而不是新创建的变量的地址?

标签: python

解决方案


hex(x)是一个字符串。id(hex(x))创建一个字符串,获取其 id,然后立即丢弃该字符串。

ID 只需要在其各自对象的生命周期内是唯一的。由于字符串不同时存在,因此它们可以具有相同的 id。


推荐阅读