为什么Python的for循环能正常运行,封装的相同逻辑函数却返回None?
问题原因
- 函数没有显式返回值:Python规则中,所有函数如果没有写
return语句指定返回内容,默认会返回None。另外字符串是Python的不可变类型,你在函数内部修改data变量只是修改了函数作用域内的局部变量,不会改变外部传入的原字符串变量,必须通过返回值把处理后的结果传递出来。你的clean函数处理完字符串后没有加return data语句,所以output拿到的就是默认的None。 - 两段代码替换逻辑不一致:你第一段可正常运行的代码是把指定特殊符号替换为空字符串
"",但封装的函数里是替换为空格" ",如果要和原逻辑输出完全一致,需要修正这个替换值的差异。
修正后的完整代码
def clean(data): chars = "()[]?+" for ch in chars: if ch in data: data = data.replace(ch,"") # 新增返回语句,把处理后的字符串返回 return data bob = "8 (including George Blake, aged 69, and Robert Reynolds, aged 12)" print(bob) output = clean(bob) print(output)
内容的提问来源于stack exchange,提问作者John Prescott
相关产品推荐
相关产品推荐

