在str.replace('a','b','l')
函数中使用'aaa'.replace('a','b')
代替(S.replace(old, new[, count]) -> str)
会返回' a'。
我想象着' l'而不是一个整数不会被读取,因为没有匹配,但为什么它返回' a'而不是抛出异常?
答案 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