Python “operator.\uu inv\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?
Python “operator.\uu inv\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?,python,bitwise-operators,operator-keyword,python-datamodel,Python,Bitwise Operators,Operator Keyword,Python Datamodel,inv和invert有什么区别 >>> import operator >>> operator.inv is operator.invert False >>> operator.__inv__ is operator.__invert__ False 我推测这是一元操作的挂钩,比如~1或(1)。\uuuu invert\uuuuu() 但是另一个对应的是什么呢?或者,如果它是相同的,为什么我们要添加另一个名称和不同的函数来执行相同的操作
inv
和invert
有什么区别
>>> import operator
>>> operator.inv is operator.invert
False
>>> operator.__inv__ is operator.__invert__
False
我推测这是一元操作的挂钩,比如~1
或(1)。\uuuu invert\uuuuu()
但是另一个对应的是什么呢?或者,如果它是相同的,为什么我们要添加另一个名称和不同的函数来执行相同的操作?两者都代表相同的运算符。Python 2.0中添加了长拼写,而短拼写从未被删除
operator.inv(obj)
operator.invert(obj)
operator.\uuuu inv\uuuj(obj)
operator.\uuuuuuuuuuuuuuuj(obj)
返回数字obj的按位倒数。
这相当于~obj
版本2.0中新增:名称invert()
和\uuuuuuuuu invert()
来源:
它们被实现为不同的对象,因为它们的表示反映了名称。请注意,相应的dunder和常规名称确实共享相同的表示形式和对象
>>> operator.__inv__
<built-in function inv>
>>> operator.__invert__
<built-in function invert>
>>> operator.__inv__ is operator.inv
True
>>> operator.__invert__ is operator.invert
True
操作员__
>>>运算符。\uuu反转__
>>>操作员.\uuuu inv\uuuuu是操作员.inv
真的
>>>运算符.\uuuu invert\uuuuu是运算符.invert
真的
从历史上看,这两个名称都是同样可行的-使用的是
inv
/\uuuu inv
名称,而使用的是特殊方法\uuu invert\uuuuuu
名称。根据inv
、invert
、\uuuuu inv
和\uuu invert\uuuuuuu>都是相同的运算符。并不意味着它们是同一个函数。根据文档。这并不意味着它们必须是同一个物体。好吧,但这并不能真正回答我的问题。为什么\uuuuu inv\uuuuuu
与任何魔法方法都不对应,却在那里?如果它们是相同的,那么为什么它们有不同的实现,而不仅仅是名称别名?它回答“另一个\uuuu inv\uuuu
对应的是什么”和“为什么我们有另一个名称”。最后一个给我一秒钟。@XÆa-13给你。我认为name参数不太有说服力,因为例如,IOError.\uu name\uuuu
是“OSError”吗?这是技术上的事实,不是争论<代码>IOError
表示为
。选择不同的运算符来表示错误,而不是错误。需要单独实现或不需要直接执行此选择。