首页 > 解决方案 > 在执行时而不是在函数结束之后接收另一个类的打印内容

问题描述

我试过的:

import import_ipynb
import time

class A:
    def func1(self):
        for i in range(0, 5):
            print(i)
            time.sleep(1)

class B:
    print('Time is:', A().func1())

class B我想获取print内容class A并添加'Time is:'到开头并在控制台中打印它。i一种解决方案是在函数结束时作为列表返回,但我希望i是瞬时的,而不是在函数完全执行时。我写的代码没有正确地做到这一点。
我想要的输出是:

Time is: 0
Time is: 1
Time is: 2
Time is: 3
Time is: 4

标签: pythonfunction

解决方案


假设您不想只更改print(i)print(f"Time is: {i}"),您可以yield i从函数中,然后在调用点打印:

import time

def func1():
    for i in range(0, 5):
        yield i
        time.sleep(1)

for i in func1():
    print(f"Time is: {i}")

我摆脱了这些课程,因为它们都与问题没有直接关系。

yield变成func1一个生成器函数。调用func1会返回一个生成器,该生成器会根据需要生成值。


推荐阅读