python - 一个令人困惑的功能,不做它所说的事情
问题描述
在 operator 模块中,有一个方法被称为isub
,它接受两个参数,并将第一个参数划分为第二个参数。
Visual Studio Code 说它这样做:与 a -= b 相同,如何?
在我的例子中,我创建了一个名为a
5 作为其值的变量,然后使用该isub
方法,并将结果保存到一个变量中,然后打印结果和a
,但a
仍然是 5,为什么?
import operator
a = 5
result = operator.isub(a, 4)
print(result) # 1
print(a) # 5
解决方案
你选择了一个糟糕的例子。int.__isub__
没有定义,所以a -= 5
完全等于a = a - 5
,没有就地修改原始值。
尝试使用一组,它确实实现了__isub__
.
>>> s = {1,2,3}
>>> operator.isub(s, {2})
>>> s
{1, 3}
a -= b
a.__isub__(b)
如同 a.__isub__
定义一样被执行。否则,它等价于a = a - b
,实现为a = a.__sub__(b)
。因此,isub(a, b)
与 相同a -= b
,但这并不意味着isub(a, b)
可以或确实a
就地修改。
推荐阅读
- css - svg 文本中的空间太大
- neo4j - spring boot Neo4j⚡️RX dto 投影与关系不起作用
- c# - 如何以编程方式将 SD 卡格式化为 FAT32?C#
- attributes - Tabulator 的基本表格配置
- reactjs - 扩展组件样式组件不会使 onClick 发出
- xaml - Xamarin xaml 字符串格式化与占位符
- java - 如何使用 JPA 和休眠映射 Java/Kotlin 字符串数组和 Postgres SQL 数组
- python - 如何在标准输入的 python 条件下也只读取一行
- java - 实体类未使用 jpa 在 mySql 数据库中创建表
- gatling - 加特林图:每 30 秒注入 100 个用户/秒,峰值为 500 个用户