使用 return 和 print 关键字时的输出差异

问题描述

def func1(*args): 对于 args 中的 i: 打印(i)

func1(10,20,34)


在上面的代码中,我以如下所示的方式得到输出

10 20 30

现在,当我以这种方式编码时,我不会像上面的编码那样得到输出

def func1(*args): 对于 args 中的 i: 返回(i)

打印(func1(10,30))

---------输出------- 10

??为什么这里只打印 10 而不是参数中传递的所有值

解决方法

??为什么这里只打印 10 而不是参数中传递的所有值

循环 for i in args: … 将遍历 主体三次,对每个参数 102030 各一次,但前提是不会过早退出,而且当您使用 10 时,会在第一个循环运行参数 return(i) 时发生这种情况,因为 return 立即离开函数并且不会返回。

另一种选择

def func1(*args):
    for i in args: yield i

这样你就可以print(*func1(10,20,30))