为什么实现相同功能的两个Python函数一个报AttributeError另一个正常?
报错核心原因
Python 内置的字符串(str)类型所有实例方法的返回特性是:类似title()这类处理方法执行完成后,本身直接返回新的str对象,不存在名为string的属性。你第二个函数中多余调用了.string,尝试访问str不存在的属性,自然抛出AttributeError。
正常函数执行逻辑拆解
def camel_case(string): n = string.title() # string调用title(),直接返回新字符串赋值给n,n本身就是可直接操作的str类型 return n.replace(" ", "") # 直接调用字符串的replace方法,逻辑正确
执行后可以正常得到结果CamelCaseWord。
报错函数执行逻辑拆解
def camel_case(string): return string.title().string.replace(" ", "")
执行步骤:
- 第一步
string.title()执行完成,返回新的字符串:" Camel Case Word" - 第二步尝试访问该返回字符串的
.string属性,str类型没有该属性,直接抛出异常,后续replace方法完全没有执行机会。
额外说明:你可能是混淆了其他类的属性调用逻辑,比如re模块的Match对象确实有.string属性可以获取原始匹配字符串,但str类型没有这个属性。
修复方案
删掉多余的.string调用即可正常运行:
def camel_case(string): return string.title().replace(" ", "") camel_case(" camel case word")
内容的提问来源于stack exchange,提问作者AlexLikesWater
相关产品推荐
相关产品推荐

