在Python中,我们可以这样做:在Python中,为什么我可以用一个数乘以一个字符串,但是我不能添加一个字符串和一个数字?
'a' * 4
获得 'AAAA'。
我们不能做:
'a' + 4
我们首先要投4中为一个字符串。
这是只是一个任意的选择重载*与一个字符串和Int arg的定义,并且不重载+为一个字符串和Int?
我想了解这是如何适合Python被认为是'强类型',如果我们将语言定义为不执行任何隐式类型转换,就像它不是将4转换为上面示例中的字符串那样。所以在第一个例子中,这是一个运算符重载的例子,而不是一个隐式转换?
在文档中,我无法找到mul或*的定义,它只接受一个Int和一个字符串,而只是需要2个Ints的形式。我们如何知道重载的定义是什么?
参考:https://docs.python.org/2/library/operator.html
'int * str'在文档[这里](https://docs.python.org/2/reference/expressions.html#binary-arithmetic-operations)中,在语言引用中,不是库引用。 (操作用int和序列来定义,字符串是一种序列。) – jwodder
这里是[图书馆文档中序列的更多信息](https://docs.python.org/2/library /stdtypes.html#typesseq)以及一系列操作。 –
要回答你的其他问题,这与重载有关,而不是类型定义。对于某些序列(例如字符串),'+'运算符被重载以表示串联,或者列表追加。 –