python concat_Python的“添加”和“concat”有什么区别?

如果您检查operator模块(add,concat)的源代码,您将找到这些函数的以下定义:def add(a, b):

"Same as a + b."

return a + b

def concat(a, b):

"Same as a + b, for a and b sequences."

if not hasattr(a, '__getitem__'):

msg = "'%s' object can't be concatenated" % type(a).__name__

raise TypeError(msg)

return a + b

所以实际上没有区别,除了concat实际上需要一个序列类型。这两个函数都使用+运算符,其效果取决于添加的类型。在

一般来说,使用^{} module在大多数情况下都没有那么有用。该模块主要用于需要传递执行操作的函数时,例如传递给^{}、^{}或{a6}等函数。但是通常,您可以直接使用+运算符。在

至于下划线函数(__add__和__concat__),它们是just aliases:

^{pr2}$

但这些当然与用于重载自定义类型运算符的special methods无关。它们是与那些特殊方法同名的函数,可能是为了使它们看起来相似。注意,对象上没有特殊的__concat__方法。在

但是,在自定义类型上实现__add__将影响运算符模块函数的工作方式,例如:>>> class Example:

def __init__ (self, x):

self.x = x

def __repr__ (self):

return 'Example({})'.format(self.x)

def __add__ (self, other):

return Example(self.x + other.x)

>>> a = Example(2)

>>> b = Example(4)

>>> operator.add(a, b)

Example(6)

>>> a + b

Example(6)

如您所见,operator.add将使用特殊方法Example.__add__的实现;但原因是operator.add的实现只使用+运算符(该行为由特殊的__add__方法明确定义)。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值