Мохнатые уроды и моральные пёзды. Войти !bnw Сегодня Клубы
Рассуждения касательно того, почему, кококо, в Питоне нету нормальных лямбд, в которых можно писать код, бывают очень многословны. По-моему нижеследующий рафинированный пример показывает, с одной стороны, что да, наверное таки они не нужны, а с другой — что заодно в Питоне, скорее всего, никогда не появится, например, оператор `let` с блочной областью видимости, хотя бы как в ES5+. Если конечно не извращаться, как в https://stackoverflow.com/a/12219552 ``` #!/usr/bin/env python3 import asyncio async def crappy_scope(): def intristic(): print(x) await asyncio.sleep(1) x = "Crappy python scope even spreads out through async callbacks!" intristic() asyncio.get_event_loop().run_until_complete(crappy_scope()) ```
#8FMCHB / @dluciv / 2413 дней назад

объясни, что в твоем примере тебе не нравится
#8FMCHB/ZI0 / @telegram / 2412 дней назад
@telegram Очень конкретно: что область видимости всех переменных внутри функции — вся функция.
#8FMCHB/DNP / @dluciv --> #8FMCHB/ZI0 / 2412 дней назад
@dluciv Ты создал замыкание внутри скоупа. Функция-замыкание имеет доступ к upvalue. Какого поведения ты ожидаешь-то, ёпт?
#8FMCHB/MQ8 / @telegram --> #8FMCHB/DNP / 2412 дней назад
@telegram Да я ожидаю того, какое на самом деле, потому что я немного знаю Питон, и при использовании его довольно редко сталкиваюсь с сюрпризами, ёпт. Мне просто обидно, что он вот такой. Какой есть.
#8FMCHB/OB6 / @dluciv --> #8FMCHB/MQ8 / 2411 дней назад
@dluciv нет, ты объясни, почему ты думаешь, что должно быть по-другому
#8FMCHB/OC3 / @telegram --> #8FMCHB/OB6 / 2411 дней назад
@telegram Потому что я считаю, что структурные управляющие конструкции должны задавать область видимости переменных, которые в них появляются. Я могу поставить `while` или `if`, и сделать `x` внутри него — ничего не изменится. Пруф: ``` #!/usr/bin/env python3 import asyncio async def crappy_scope(): def intristic(): print(x) await asyncio.sleep(0) if True: x = "Crappy python scope even spreads out through async callbacks!" intristic() asyncio.get_event_loop().run_until_complete(crappy_scope()) ```
#8FMCHB/VUN / @dluciv --> #8FMCHB/OC3 / 2411 дней назад
@dluciv ясно, аргументы уровня "ящитаю"
#8FMCHB/7G1 / @telegram --> #8FMCHB/VUN / 2411 дней назад
@telegram Именно так
#8FMCHB/27W / @dluciv --> #8FMCHB/7G1 / 2411 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.