执行以下程序,下列选项中,说法正确的是()
tup = (1,2,[3,4]) ①
tup[2]+=[5,6] ②
执行代码②后,变量tup[2]的id发生改变
①和②均可以执行而不会抛出异常
执行代码②时会抛出异常,最终tup的值为(1,2,[3,4,5,6])
执行代码②时会抛出异常,最终tup的值为(1,2,[3,4])
+=和.extend()在修改list时都不会修改地址。Python中两者的行为不同:Python中的.extend()就是在原始内存地址上对list进行了扩展,没有改变内存地址,也就不会报错。
后者成功在原地址修改了列表,但是它会重新赋值,而这一步引发了报错,因为元组的元素不能修改。
tup = (1,2,[3,4]) tup[2].extend([5,6]) print(tup) # (1, 2, [3, 4, 5, 6])
tup = (1, 2, [3, 4]) a = id(tup) tup[2].extend([5, 6]) b = id(tup) print(tup) print(a == b) # true (1, 2, [3, 4, 5, 6]) True
tup = (1, 2, [3, 4]) a = id(tup) tup[2].extend([5, 6]) b = id(tup) print(tup) print(a == b) # true
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题