我是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
答案 0 :(得分:1)
您的过滤器函数应返回True或False:
def filter_even(N):
return N % 2 == 0
由于它返回的是数字或无,因此您的比较 f_even(number)!= 0 不起作用,因为 None!= 0 。 br />
我稍微更改了您的代码(过滤了列表推导中的值):
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]