Warning: preg_grep(): Compilation failed: quantifier does not follow a repeatable item at offset 134 in /var/www/tg-me/post.php on line 75
Библиотека питониста | Python, Django, Flask | Telegram Webview: pyproglib/6709 -
Telegram Group & Telegram Channel
💡 Шпаргалка: функция с `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 в теле функции делает её генераторной на уровне определения.

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

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



tg-me.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:
tg-me.com/pyproglib/6709

View MORE
Open in Telegram


Библиотека питониста | Python Django Flask Telegram | DID YOU KNOW?

Date: |

For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.

The global forecast for the Asian markets is murky following recent volatility, with crude oil prices providing support in what has been an otherwise tough month. The European markets were down and the U.S. bourses were mixed and flat and the Asian markets figure to split the difference.The TSE finished modestly lower on Friday following losses from the financial shares and property stocks.For the day, the index sank 15.09 points or 0.49 percent to finish at 3,061.35 after trading between 3,057.84 and 3,089.78. Volume was 1.39 billion shares worth 1.30 billion Singapore dollars. There were 285 decliners and 184 gainers.

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


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