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

这是什么运算符* = -1

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

这是什么运算符* = -1

在绝大多数情况下

y *= <expr>

是相同的

y = y * <expr>

但在一般情况下,它解释为:

y = imul(y, <expr>)

这等效于:

y = y.__imul__(<expr>)

如果

y
的类型覆盖
__imul__

这意味着if

y
的类型将覆盖 inplace 乘法运算符,
y*=<expr>
则在 inplace
中执行,而
y=y*<expr>
在not中执行。


编辑

可能尚不清楚为什么需要分配,即为什么将其解释为

y = imul(y, <expr>)
,而不仅仅是
imul(y, <expr>)

原因是在以下两种情况下得出相同的结果非常有意义:

c = a * b

c = ac *= b

现在,如果

a
b
属于相同类型(例如,浮点数,numpy数组等),这当然可以工作,但是如果不相同,则运算结果可能具有的类型
b
,在这种情况下操作不能是的就地操作
a
,因此需要将结果分配给
a
,以实现正确的行为。

例如,这要感谢分配:

from numpy import arangea = 2a *= arange(3)a=> array([0, 2, 4])

而如果分配被放弃,则

a
保持不变:

a = 2imul(a, arange(3))=> array([0, 2, 4])a=> 2


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

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

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