Python:我的函数将打印连续输出但不会 return 它们。

Python: My function will print continuous outputs but will not return them.

首先,我想不出一个合适的标题。其次,我对编程还很陌生。不管怎样,我有这个功能:

def addtrinumbs():
    x = 1
    list1 = []
    while x > 0:
        list1.append(x)
        x = x + 1
        y = sum(list1)
        print y

这将随着 y 的变化不断打印它。我想做的是:

def addtrinumbs():
    x = 1
    list1 = []
    while x > 0:
        list1.append(x)
        x = x + 1
        y = sum(list1)
        return y

def addone(numbers):   
    x = numbers + 1   
    print x

addone(addtrinumbs())

所以我希望 addone() 不断从 addtrinumbs() 获取输入。我觉得我缺少一个真正基本和简单的概念。当我 运行 它时,我只得到 1 个输出,即 2。我已经阅读了有关生成器的信息,但我不确定这是否是我需要使用的。我想我明白它们的用途,但我找不到与我的问题相关的例子。任何帮助或指导正确的方向都会很好,谢谢。

当函数return有东西时,函数会自动中断并退出函数。在 上查看更多相关信息。您有一个选择是首先将您想要的 return 附加到列表,然后 return 该列表。

当函数 addtrinumbs 在第一个循环中查看 return 语句时,它退出函数,return 获取相关值。这就是为什么它 returning 只有一个值。 您需要将值存储在列表或其他内容中,然后 return 列表。因此,使用 list2 = [] 而不是 return y,执行 list2.append(y),然后最终 return 列表,return list2.

您似乎缺少 generators 的概念——addtrinumbs 应该 yield 值而不是 return 他们。 (它显然永远不会终止,但是,对于生成器,没关系。

addone 将生成器作为参数并在其上循环

for x in numbers:
    print(x+1)

这将发出无穷无尽的数字流 -- 最好有一个退出条件 somewhere -- 但是,这是要使用的一般概念。