https://thecode.media/yield-v-python/