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(…)更差,遵循以下准则:“显式优于隐式”。