PYPROGLIB Telegram 6709
💡 Шпаргалка: функция с `yield` всегда возвращает генератор

Если в функции присутствует хотя бы один yield, Python преобразует её в генератор — независимо от того, выполнится ли yield при вызове.

Обычное поведение с возвращением списка:
def greet(as_list: bool):
message = 'hello!'
if as_list:
message_list = []
for char in message:
message_list += char
return message_list
else:
return message


>>> greet(as_list=True)
['h', 'e', 'l', 'l', 'o', '!']
>>> greet(as_list=False)
'hello!'


А вот что происходит, если использовать генератор с yield:
def greet(as_generator: bool):
message = 'hello!'
if as_generator:
for char in message:
yield char
else:
return message


>>> greet(as_generator=True)
<generator object greet at 0x0000023F0A066F60>
>>> greet(as_generator=False)
<generator object greet at 0x0000023F0A066F60>


Даже при as_generator=False функция всё равно возвращает объект генератора. Это связано с тем, что наличие yield в теле функции делает её генераторной на уровне определения.

📌 Это важно учитывать при проектировании логики, особенно если ожидается обычное значение, а не итератор.

Библиотека питониста #буст
👍202❤‍🔥1



tgoop.com/pyproglib/6709
Create:
Last Update:

💡 Шпаргалка: функция с `yield` всегда возвращает генератор

Если в функции присутствует хотя бы один yield, Python преобразует её в генератор — независимо от того, выполнится ли yield при вызове.

Обычное поведение с возвращением списка:

def greet(as_list: bool):
message = 'hello!'
if as_list:
message_list = []
for char in message:
message_list += char
return message_list
else:
return message


>>> greet(as_list=True)
['h', 'e', 'l', 'l', 'o', '!']
>>> greet(as_list=False)
'hello!'


А вот что происходит, если использовать генератор с yield:
def greet(as_generator: bool):
message = 'hello!'
if as_generator:
for char in message:
yield char
else:
return message


>>> greet(as_generator=True)
<generator object greet at 0x0000023F0A066F60>
>>> greet(as_generator=False)
<generator object greet at 0x0000023F0A066F60>


Даже при as_generator=False функция всё равно возвращает объект генератора. Это связано с тем, что наличие yield в теле функции делает её генераторной на уровне определения.

📌 Это важно учитывать при проектировании логики, особенно если ожидается обычное значение, а не итератор.

Библиотека питониста #буст

BY Библиотека питониста | Python, Django, Flask




Share with your friend now:
tgoop.com/pyproglib/6709

View MORE
Open in Telegram


Telegram News

Date: |

The administrator of a telegram group, "Suck Channel," was sentenced to six years and six months in prison for seven counts of incitement yesterday. 2How to set up a Telegram channel? (A step-by-step tutorial) How to Create a Private or Public Channel on Telegram? Commenting about the court's concerns about the spread of false information related to the elections, Minister Fachin noted Brazil is "facing circumstances that could put Brazil's democracy at risk." During the meeting, the information technology secretary at the TSE, Julio Valente, put forward a list of requests the court believes will disinformation. Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week.
from us


Telegram Библиотека питониста | Python, Django, Flask
FROM American