if you look at the function below, you might see something strange
def might_be_generator(is_generator: bool = False):
if is_generator:
for i in range(5):
yield i
else:
return list(range(5))
Now we will call this function with is_generator=True
parameter:
>>> might_be_generator(True)
<generator object might_be_generator at 0x7f717a2396d0>
>>> list(might_be_generator(True))
[0, 1, 2, 3, 4]
>>> type(might_be_generator(True))
<class 'generator'>
Sounds like it's true
But let's try this with is_generator=False
parameter:
>>> might_be_generator()
<generator object might_be_generator at 0x7f717a2396d0> # What is going on !?
>>> list(might_be_generator())
[]
>>> type(might_be_generator())
<class 'generator'>
What happened?
still a generator
. shouldn't be a list
?