Что именно происходит, когда yield и return используются в одной и той же функции в Python, например?
def find_all(a_str, sub):
start = 0
while True:
start = a_str.find(sub, start)
if start == -1: return
yield start
start += len(sub) # use start += 1 to find overlapping matches
Является ли он еще генератором?