在不使用外部函数过滤偶数的情况下,这段代码有什么改进吗



我是python的新手,我的侄女让我创建一个使用2个args的函数。返回值是从该函数结果的范围中筛选偶数。

这是我得到的代码:

def filter_even(N):
if N%2==0:
return N
def f_evendecorator(func):
def get_even(*args):
f_even = filter_even
f = func(*args)
even = []
for number in range(1,f+1):
if f_even(number)!=None:
even.append(f_even(number))
return even
return get_even
@f_evendecorator
def mult(x,y):
return x * y

您的过滤函数应该返回True或False:

def filter_even(N):
return N % 2 == 0

由于它返回的是它得到的数字或None,因此您的比较f_even(number(!=0不起作用,因为无!=0

我稍微修改了你的代码(过滤了列表中的值(:

def f_evendecorator(func):
def get_even(*args):
f_even = filter_even
f = func(*args)
return [i for i in range(1,f + 1) if i%2==0]
return get_even
@f_evendecorator
def mult(x,y):
return x * y
print(mult(5,5)) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24]

最新更新