Python的str.replace没有抛出异常

时间:2017-03-10 13:17:55

标签: python string python-3.x

str.replace('a','b','l')函数中使用'aaa'.replace('a','b')代替(S.replace(old, new[, count]) -> str)会返回' a'。

我想象着' l'而不是一个整数不会被读取,因为没有匹配,但为什么它返回' a'而不是抛出异常?

1 个答案:

答案 0 :(得分:4)

因为str.replace('a','b','l')被解释为'a'.replace('b','l')

您正在调用类method的{​​{1}}并在此处明确传递实例str

'a'

而不是通过str.replace('a', ...) -> 'a'.replace(...) 隐式传递实例的传统方式。因此,'a'.replace(...)'b'实际上被解释为'l'的{​​{1}}和old参数。

如果您向new提供一个非int作为str.replace的值,那么您将获得例外:

count