Python';s str.replace未引发异常

Python';s str.replace未引发异常,python,string,python-3.x,Python,String,Python 3.x,使用str.replace('a','b','l')而不是'aaa' 我想不会读取“l”而不是整数,因为没有匹配项,但为什么它返回“a”而不抛出异常?因为str.replace('a','b','l')被解释为'a'。replace('b','l') 您正在调用类str的方法,并在此处显式传递实例'a': str.replace('a', ...) -> 'a'.replace(...) 而不是传统的通过'a.replace(…)隐式传递实例的方式。因此'b'和'l'实际上被解释为str

使用
str.replace('a','b','l')
而不是
'aaa'

我想不会读取“l”而不是整数,因为没有匹配项,但为什么它返回“a”而不抛出异常?

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

您正在调用类
str
方法
,并在此处显式传递实例
'a'

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

如果将非int作为
count
的值提供给
str.replace
您将得到异常:

str.replace('a', 'a', 'b', '1')

TypeErrorTraceback (most recent call last)
<ipython-input-23-f8b6e2752fe6> in <module>()
----> 1 str.replace('a', 'a', 'b', '2')

TypeError: 'str' object cannot be interpreted as an integer
str.replace('a','a','b','1')
TypeErrorTraceback(最近一次呼叫上次)
在()
---->1 str.replace('a','a','b','2')
TypeError:“str”对象不能解释为整数
如果是“a”,.replace(…)则比str.replace(…)更差,遵循以下准则:“显式优于隐式”。