python - 为什么这个函数对于同一个变量但是同一个地址有不同的值?
问题描述
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 找到的是参数的原始地址,而不是新创建的变量的地址?
解决方案
hex(x)
是一个字符串。id(hex(x))
创建一个字符串,获取其 id,然后立即丢弃该字符串。
ID 只需要在其各自对象的生命周期内是唯一的。由于字符串不同时存在,因此它们可以具有相同的 id。
推荐阅读
- python - 如何使用 Python Plotly 在同一 x 轴上按月和日绘制多个烛台?
- php - HTML联系表PHP不向Gmail发送电子邮件的问题
- swift - 查找机场前缀的 Firestore 查询
- vba - 将字符串值导出到 .txt 文件
- javascript - 如何恢复从 Google Drive 的回收站中删除的已发布 Google Apps 脚本的 GSCRIPT 文件
- laravel - Laravel mix.js() 将我的 ES6 转换为 Vanilla JS
- sql - 链接记录?
- python - 微服务集群中的授权架构
- python - 需要 DJANGO 电子商务网站帮助。不同的订单有相同的OrderItems
- google-bigquery - 从 Google BigQuery 中的 select 语句创建或更新表