What I have tried:
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())
In class B
I want to get print
content in class A
and add 'Time is:'
to the beginning and print it in console. One solution is to return i
as a list at the end of function, but I want i
as instantaneous, not when the function is fully executed. The code I wrote does not do this correctly.
The output I want is:
Time is: 0
Time is: 1
Time is: 2
Time is: 3
Time is: 4
Assuming that you don't want to just change print(i)
to print(f"Time is: {i}")
, you can yield i
from the function, then print at the callsite:
import time
def func1():
for i in range(0, 5):
yield i
time.sleep(1)
for i in func1():
print(f"Time is: {i}")
I got rid of the classes since neither was directly relevant to the problem.
yield
turns func1
into a generator function. Calling func1
returns a generator that produces values as needed.