栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

“ for”循环中i = i + 1和i + = 1有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

“ for”循环中i = i + 1和i + = 1有什么区别?

不同之处在于,一个修改数据结构本身(就地操作),

b += 1
而另一个仅 重新分配 变量
a = a + 1


仅出于完整性考虑:

x += y
不是总是 做就地操作,有(至少)三种例外情况:

  • 如果

    x
    没有实现
    __iadd__
    则方法的
    x += y
    声明仅仅是一个速记
    x = x + y
    。如果
    x
    是类似的情况就是这种情况
    int

  • 如果

    __iadd__
    返回
    NotImplemented
    ,Python将退回到
    x = x + y

  • __iadd__
    理论上讲,该方法可以实现为无法正常运行。但是,这样做真的很奇怪。

发生时,您的

b
s是
numpy.ndarray
实现
__iadd__
并返回自身的,因此您的第二个循环就地修改了原始数组。

您可以在Python文档“模拟数字类型”中了解更多信息。

这些[

__i*__
]方法称为实现增强算术分配(
+=
-=
*=
@=
/=
//=
%=
**=
<<=
>>=
&=
^=
|=
)。这些方法应尝试就地执行操作(修改self)并返回结果(可以是,但不一定是self)。如果未定义特定方法,则扩展分配将退回到常规方法。例如,如果x是具有
__iadd__()
方法的类的实例,
x+= y
则等效于
x = x.__iadd__(y)
。否则,将
x.__add__(y)
与和
y.__radd__(x)
一起评估
x +y
。在某些情况下,扩充分配可能会导致意外错误(请参见为什么
a_tuple[i] +=["item"]
加法有效时会引发异常?),但实际上,该行为是数据模型的一部分。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/637577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号