Mastering-Python-2e-code_2/CH_11_debugging/T_00_debugging_generator.rst
2022-05-05 18:25:55 +02:00

57 lines
1.1 KiB
ReStructuredText

>>> def hiding_generator():
... print('a')
... yield 'first value'
... print('b')
... yield 'second value'
... print('c')
>>> generator = hiding_generator()
>>> next(generator)
a
'first value'
>>> next(generator)
b
'second value'
>>> next(generator)
Traceback (most recent call last):
...
StopIteration
##############################################################################
>>> import os
>>> import inspect
>>> import linecache
>>> def print_code():
... while True:
... info = inspect.stack()[1]
... lineno = info.lineno + 1
... function = info.function
... # Fetch the next line of code
... code = linecache.getline(info.filename, lineno)
... print(f'{lineno:03d} {function}: {code.strip()}')
... yield
# Always prime the generator
>>> print_code = print_code()
>>> def some_test_function(a, b):
... next(print_code)
... c = a + b
... next(print_code)
... return c
>>> some_test_function('a', 'b')
003 some_test_function: c = a + b
005 some_test_function: return c
'ab'