You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python3编写成员测试函数返回None问题求助

解决Python成员测试函数返回None的问题

我来帮你分析下代码里的问题,以及对应的修复方案:

问题根源

你的函数返回None主要有两个原因:

  1. 参数被无端覆盖:函数开头的x = []num = int()直接把调用时传入的有效参数替换成了空列表和0(int()默认返回0),导致后续的成员判断完全基于错误的数值。
  2. 函数缺少默认返回值:只有当num in xTrue时函数才返回True,但当条件不满足时,函数没有任何return语句,Python会默认返回None

简单说,当你调用bln(x, num)时,函数内部立刻把传入的有效列表和数值替换成了空列表和0,这时候判断0 in []显然是False,函数没有返回值,最终输出None

修复后的代码

首先移除函数内部覆盖参数的代码,然后确保函数在所有分支都有返回值:

def bln(x, num):
    # 直接使用传入的参数进行判断
    if num in x:
        return True
    # 补充False的返回分支
    return False

num = 4
x = [i for i in range(1, 5)]
print(x)
y = bln(x, num)
print(y)

运行后会输出:

[1, 2, 3, 4]
True

更简洁的写法

其实可以直接返回num in x这个布尔表达式,因为它本身就会返回TrueFalse,不需要额外的条件判断:

def bln(x, num):
    return num in x

这个版本的函数逻辑更清晰,代码更简洁,效果和上面的修复版完全一致。

内容的提问来源于stack exchange,提问作者Mahesh Hegde

火山引擎 最新活动