gpt4 book ai didi

Python:&= 运算符

转载 作者:IT老高 更新时间:2023-10-28 21:12:13 24 4
gpt4 key购买 nike

当我尝试使用 &=|= 运算符或/和两个集合时,我得到了一些奇怪的结果。

s1 = {1,2,3}
s2 = {2,3,4}
tmp = s1
tmp &= s2

正如预期的那样,tmp 将是 {2,3},但我不知道为什么 s1 也将它的值更改为 {2,3}。

但是,如果我这样做:

tmp = tmp & s2

那么,s1 将不变!谁能帮我解释一下 &= 运算符下面发生了什么?

最佳答案

&= (set.__iadd__) set 的实现方式与 & (set.__add) 不同。 .

set &= ... 使用 set.intersection_update 实现就地更新集合。


相关CPython代码(Object/setobject.c):

set_iand(PySetObject *so, PyObject *other)
{
PyObject *result;

if (!PyAnySet_Check(other))
Py_RETURN_NOTIMPLEMENTED;
result = set_intersection_update(so, other); // <----
if (result == NULL)
return NULL;
Py_DECREF(result);
Py_INCREF(so);
return (PyObject *)so;
}

关于Python:&= 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28395503/

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