首页 新闻 会员 周边

python 为什么ID变了

0
[已解决问题] 解决于 2022-10-08 10:27

import datetime
a = 1
def aa(da):
print(id(da))
da= datetime.datetime.now()
print(id(da))
aa(a)

2688408223984
2688476823696

真的很老了的主页 真的很老了 | 菜鸟二级 | 园豆:202
提问于:2022-10-07 12:20
< >
分享
最佳答案
0

https://blog.csdn.net/Ljj9889/article/details/125965661
PS:了解下Markdown的代码块吧

原代码应该如下吧,da的指向变了,所以id()打印的地址不一样


import datetime

a = 1


def aa(da):
    print(id(da))
    da = datetime.datetime.now()
    print(id(da))


if __name__ == '__main__':
    aa(a)

如果你想不变,要改变a的数据类型,如下

import datetime

a = [1, ]


def aa(da):
    print(id(da))
    da[0] = datetime.datetime.now()
    print(id(da))


if __name__ == '__main__':
    aa(a)
奖励园豆:5
〆灬丶 | 老鸟四级 |园豆:2287 | 2022-10-08 10:19

谢谢

真的很老了 | 园豆:202 (菜鸟二级) | 2022-10-08 10:25
其他回答(1)
0

python中id()是取对象在内存地址。在调用函数aa的时候是将该值值复制了一份这样就有了新地址,这样在函数内操作这个对象,就不会影响到外面原始的da。等于函数内的da跟外面的da在调用后完全没关系了

北方姆Q | 园豆:1118 (小虾三级) | 2022-10-08 10:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册