PYPROGLIB Telegram 7119
🐍 Python 3.14+: новый SyntaxWarning про return в finally

В Python 3.14 появился свежий ворнинг, связанный с тем, что в блоках finally нельзя (и не стоит) использовать:
return
break
continue

Пример:
import random

def d6() -> int:
try:
return random.randint(1, 6)
finally:
return 4 # всегда перезапишет результат!


Теперь при запуске:
SyntaxWarning: 'return' in a 'finally' block


❗️ Проблема в том, что return внутри finally переопределяет любое предыдущее значение — то есть в примере выше кубик всегда возвращает 4, даже если генератор случайных чисел сработал корректно.

Решение: вынести return из finally, например:
def d6() -> int:
try:
return random.randint(1, 6)
except Exception:
return 4 # fallback


А ещё лучше — просто:
def d6() -> int:
return random.randint(1, 6)


👉 Идея ворнинга (PEP 765) в том, чтобы спасти разработчиков от коварных багов и неожиданных перезаписей return/break/continue внутри finally.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍203🤔3



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

🐍 Python 3.14+: новый SyntaxWarning про return в finally

В Python 3.14 появился свежий ворнинг, связанный с тем, что в блоках finally нельзя (и не стоит) использовать:
return
break
continue

Пример:

import random

def d6() -> int:
try:
return random.randint(1, 6)
finally:
return 4 # всегда перезапишет результат!


Теперь при запуске:
SyntaxWarning: 'return' in a 'finally' block


❗️ Проблема в том, что return внутри finally переопределяет любое предыдущее значение — то есть в примере выше кубик всегда возвращает 4, даже если генератор случайных чисел сработал корректно.

Решение: вынести return из finally, например:
def d6() -> int:
try:
return random.randint(1, 6)
except Exception:
return 4 # fallback


А ещё лучше — просто:
def d6() -> int:
return random.randint(1, 6)


👉 Идея ворнинга (PEP 765) в том, чтобы спасти разработчиков от коварных багов и неожиданных перезаписей return/break/continue внутри finally.

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

#буст

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




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

View MORE
Open in Telegram


Telegram News

Date: |

Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel. How to Create a Private or Public Channel on Telegram? Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.! A new window will come up. Enter your channel name and bio. (See the character limits above.) Click “Create.” The group also hosted discussions on committing arson, Judge Hui said, including setting roadblocks on fire, hurling petrol bombs at police stations and teaching people to make such weapons. The conversation linked to arson went on for two to three months, Hui said.
from us


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