使用 return() 方法时 args() returning 只有一个值的原因是什么?

What is the reason behind args() returning only one value when return() method is used?

我使用的代码如下:

def myfunc(*args): 对于我在(args): 如果我 % 2 == 0: return我

myfunc(1,2,3,4,5,6)

当前输出为:

输出:2

期望: 我想 return 所有偶数值而不是一个值。

如评论中所建议,您不能 return 多个值。所以你可以把你所有的价值添加到一个列表中并使用它。

def myfunc(*args):
   list1 = list()
   for i in (args):
       if i % 2 == 0:
           list1.append(i)
   return list1

myfunc(1,2,3,4,5,6)

或者,您可以使用生成器函数逐个获取值。

def myfunc(*args):
   for i in (args):
       if i % 2 == 0:
           yield i


something = myfunc(1,2,3,4,5,6)

您是 return 满足 if condition 的第一个值。您需要将所有值存储在 list 中,然后在 for loop 完成后存储在 return 中。

def func(*args):
    temp = []
    for i in (args):
        if i%2==0:
            temp.append(i)
    return temp

print(func(1,2,3,4,5,6))

输出:

[2,4,6]

Why for args() returning only one value when using return()?

-- args 没有 return 任何东西。你只是通过它把你的输入传递给函数。 -- 您还在 for 循环中使用了 return,这会导致函数 return 放弃循环。

试试下面的代码:

def myfunc(*args):
    return [x for x in args if x%2 == 0]

print myfunc(1,2,3,4,5,6)

输出:

[2, 4, 6]

您的函数在执行第一个 return 表达式时停止。另一种选择是:

def myfunc(*args):
    result = []
    for i in (args):
        if i % 2 == 0:
            result.append(i)
    return result
myfunc(1,2,3,4,5,6)