Python函数get_token()可打印token_value却返回None问题排查
问题分析:为何
get_token()打印token_value后却返回None? 问题出在处理空格的分支逻辑里:
if string[0] == " ": cursor += 1 get_token() return
当遇到空格时,你递归调用了get_token(),但没有把递归调用的返回值传递出去,而是直接执行return——这会导致当前get_token()函数实例没有返回任何值(即返回None),而递归调用生成的正确返回结果被直接丢弃了。
修复方法很简单,把递归调用改为返回它的结果:
if string[0] == " ": cursor += 1 return get_token()
修复后运行代码,就能得到正确的返回值。比如处理字符串里的空格时,递归调用的get_token()会返回后续的token,这个结果会被当前函数传递出去,不会再出现返回None的情况。
另外补充:当前代码里的has_more_tokens()判断可以在递归前再做一次校验,但核心问题就是递归时未返回结果。
内容的提问来源于stack exchange,提问作者Kyle Angelo Gonzales
相关产品推荐
相关产品推荐

