Python调用遍历字典的自定义函数时末尾输出None的原因是什么
问题根本原因
Python 规定所有函数如果没有显式定义return返回值,执行结束后默认返回None。
你遇到的输出末尾多一行None的问题,由两个逻辑叠加导致:
- 你定义的
groups函数只有遍历打印键和序号的逻辑,全程没有写return语句,函数执行完毕后默认返回None - 你调用函数时使用了
print(groups(参数))的写法,会先执行groups函数内部的打印逻辑(输出local、0、public、1等你预期的内容),之后会再把groups函数的返回值(也就是None)打印出来,这就是额外输出的来源。
修复方案
有两种常用的修复方式,按需选择即可:
- 直接去掉调用时的外层
print
函数内部已经完成了所有打印逻辑,不需要额外打印函数的返回值,直接调用即可:
groups({"local": ["admin", "userA"], "public": ["admin", "userB"], "administrator": ["admin"]})
- 给函数加显式的
return语句
如果后续需要用到函数遍历后的结果,可以显式返回你需要的内容,此时打印返回值就不会出现默认的None:
def groups(group_dictionary): i = 0 result = [] for group in group_dictionary: print(group) print(i) result.append((i, group)) i = i+1 return result print(groups({"local": ["admin", "userA"], "public": ["admin", "userB"], "administrator": ["admin"]}))
内容的提问来源于stack exchange,提问作者Salah.Louizy
相关产品推荐
相关产品推荐

