Python使用finditer时return语句无输出问题求助
为啥return没输出?其实是这点没注意到!
嘿,我明白你为啥困惑了!其实不是return语句无效,而是你漏了关键一步——你只是调用了函数,但没把它返回的结果打印出来!
咱们拆解下你的代码逻辑:
- 你定义的
count_code函数,内部通过finditer找到所有匹配项,转成元组后用return len(result)把匹配次数返回给了调用者。 - 当你执行
count_code(mystr)时,函数确实算出了正确结果(这里应该是2,匹配到code和cope),但Python不会自动把返回值显示在控制台——它只是把这个值存在内存里,除非你明确告诉它要输出。
而你说用print(len(matches))能看到结果,是因为那行代码直接把内容打印到控制台了,这和return的作用完全不一样:
return是把值传递给函数的调用者,方便你后续用这个值做其他操作(比如赋值给变量、参与其他计算);print是直接把内容输出到控制台,让你直观看到结果。
那怎么让return的结果显示出来?有两个简单办法:
- 办法一:调用函数时用
print包裹它:print(count_code(mystr)) - 办法二:如果只是想临时看结果,也可以在函数内部先return,然后调用时打印,但更推荐第一种,因为这样函数的复用性更强——比如之后你想把匹配次数存起来用,直接
match_num = count_code(mystr)就行。
另外提一句:你用finditer转成元组的写法是对的,因为finditer返回的是迭代器,迭代器只能遍历一次,转成元组后就能固定住所有匹配对象,再计算长度完全没问题,这部分代码没毛病~
内容的提问来源于stack exchange,提问作者pyeR_biz
相关产品推荐
相关产品推荐

