Python函数传入整数时未返回re字典的原因咨询
问题解答
问题原因
这确实属于Python条件判断逻辑的问题,核心出在第一个if a:的布尔判断上:
- 在Python中,整数的布尔求值规则是:0会被视为False,所有非零整数都会被视为True。
- 当传入任意非零整数时,
if a:条件成立,会进入第一个分支,接着判断type(a) == int成立,直接返回字符串'an int',代码根本不会执行到创建字典re的部分。 - 只有当传入整数0时,
if a:条件不成立,才会执行re = {"key":a}并返回这个字典。
代码逻辑修正示例
如果你的需求是传入整数时返回字典,其他类型返回对应提示,可调整条件判断顺序:
def fun(a): if type(a) == int: re = {"key": a} return re else: return "not"
如果需要区分0和非零整数的情况,可明确判断:
def fun(a): if type(a) == int: if a == 0: return "zero int" else: re = {"key": a} return re else: return "not"
内容的提问来源于stack exchange,提问作者Ravi Dawade
相关产品推荐
相关产品推荐

