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

Python扩充作业问题

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

Python扩充作业问题

对于

+
操作员,Python定义了对象可以实现的三种“特殊”方法:

  • __add__
    :添加两项(
    +
    运算符)。当您执行时
    a + b
    ,的
    __add__
    方法
    a
    将以
    b
    作为参数进行调用。
  • __radd__
    :反映添加;对于
    a + b
    ,的
    __radd__
    方法
    b
    a
    作为实例调用。仅当
    a
    不知道如何添加并且两个对象是不同类型时才使用。
  • __iadd__
    :就地添加;用于
    a += b
    将结果分配回左变量的位置。这是单独提供的,因为有可能以更有效的方式实现它。例如,如果
    a
    是列表,则
    a += b
    与相同
    a.extend(b)
    。但是,在这种情况下,
    c = a + b
    您必须先复制的副本,
    a
    然后再进行扩展,因为
    a
    在这种情况下不会进行修改。请注意,如果您未实现,
    __iadd__
    则Python只会调用
    __add__

因此,由于这些不同的操作是通过单独的方法实现的,因此有可能(但通常是不好的做法)实现它们,以使它们执行完全不同的操作,或者在这种情况下,仅执行 略有
不同的操作。

其他人推论您正在使用NumPy并解释了其行为。但是,您询问了底层实现。希望您现在明白 为什么 有时情况与情况

a += b
不同
a = a +b
。顺便说一下,也可以为其他操作实现类似的三重方法。请参阅此页面以获取所有受支持的就地方法的列表。



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

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

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