gpt4 book ai didi

python - 检查 Python 中的可变性?

转载 作者:IT老高 更新时间:2023-10-28 22:08:56 28 4
gpt4 key购买 nike

考虑一下 code :

a = {...} # a is an dict with arbitrary contents
b = a.copy()
  1. 可变性在字典的键和值中起什么作用?
  2. 如何确保一个字典的键或值的更改不会反射(reflect)在另一个字典中?
  3. 这与可散列的 constraint 有何关系? dict 键?
  4. Python 2.x 和 Python 3.x 之间的行为有什么不同吗?

如何检查 Python 中的类型是否可变?

最佳答案

1) 键不能是可变的,除非您有一个用户定义的可散列但也可变的类。这就是强加给你的一切。 但是,使用可散列、可变对象作为 dict 键可能不是一个好主意。

2) 通过不在两个字典之间共享值。可以共享 key ,因为它们必须是不可变的。在 copy 模块的意义上,复制字典绝对是安全的。在此处调用 dict 构造函数也可以:b = dict(a)。你也可以使用不可变的值。

3) 所有内置的不可变类型都是可散列的。所有内置的可变类型都不是可散列的。对于一个可散列的对象,它必须在其整个生命周期内具有相同的散列,即使它已发生变异。

4) 我不知道;我描述的是 2.x。

如果一个类型不是不可变的,那么它就是可变的。一个类型是不可变的,如果它是一个内置的不可变类型:str, int, long, bool, floattuple,可能还有一些我忘记了。用户定义的类型总是可变的。

如果一个对象不是不可变的,那么它就是可变的。如果一个对象递归地仅由不可变类型的子对象组成,则它是不可变的。因此,列表元组是可变的;元组的元素不能替换,但可以通过列表界面修改,改变整体数据。

关于python - 检查 Python 中的可变性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4374006/

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