gpt4 book ai didi

Python id 问题

转载 作者:行者123 更新时间:2023-12-01 06:30:05 25 4
gpt4 key购买 nike

我正在使用以下代码,发现字符串变量具有相同的 id。谁能告诉我为什么只有 string 的行为与其他两种 int 和 list 类型不同?

再次总结一下问题,number1和number2有不同的id。list1 和 list2 也有不同的 id。然而,string1、string2 甚至 string3 与其他字符串变量具有相同的 id...!

number1 = 123456
number2 = 123456
number3 = number1
print(id(number1))
print(id(number2))
print(id(number3))

list1 = [1, 2, 3]
list2 = [1, 2, 3]
list3 = list1
print(id(list1))
print(id(list2))
print(id(list3))

string1 = 'hello'
string2 = 'hello'
string3 = string1
print(id(string1))
print(id(string2))
print(id(string3))

最佳答案

您已经观察到一些内部实现细节(语言不保证的优化):

  • -5 <= x <= 256 范围内的整数在启动时预先计算并重用。

  • 直接在程序中输入的字符串 string1 = 'hello'被拘留并重用。

还有一些有保证的行为:

  • 诸如 string3 = string1 之类的赋值切勿复印。

  • 新的可变对象永远不会被重用:[1, 2, 3] 。它们必须是独特的,这样它们才能随着时间的推移而发生不同的变异。

  • 单例如None仅实例化一次,并且可以使用对象标识进行可靠比较:result is None .

希望这能为您提供有关该语言及其实现的一些见解。

关于Python id 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com