Size: a a a

2017 September 06

N

Nikolay in Moscow Python
уже поливали говном эту диаграмму в питоночате
источник

N

Nikolay in Moscow Python
некорректная она
источник

AS

Alexey Starkov in Moscow Python
tl;dr? или ссылку позязя
источник
2017 September 07

AS

Alexey Starkov in Moscow Python
а вот скажите пожалуйста, кто знает, где почитать про то что list-и-прочие-comprehensions заводят свой scope? или это деталь реализации?
источник

GB

Grigory Bakunov in Moscow Python
В сорцах сpython посмотреть
источник

GB

Grigory Bakunov in Moscow Python
Конечно заводят, надо же где-то переменные держать
источник

GB

Grigory Bakunov in Moscow Python
Хотябы для итератора
источник

AS

Alexey Starkov in Moscow Python
ну вот интересно именно насколько это стандартное поведение
источник

AS

Alexey Starkov in Moscow Python
т.е. конкретно мне интересно что locals() внутри comprehension это не тот locals() что в остальном теле
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
О у меня вопрос по поводу list comrehension.
Если мы итерируемся по списку, то интерпретатор сразу выделяет массив нужного размера раз ему уже известна длина исходного массива??
источник

GB

Grigory Bakunov in Moscow Python
Alexey Starkov
ну вот интересно именно насколько это стандартное поведение
Это обычное поведение, стандартное. Не понимаю даж в чем тут вопрос может быть
источник

GB

Grigory Bakunov in Moscow Python
Сергей Козλов ⚡️🧙🏻‍♂️
О у меня вопрос по поводу list comrehension.
Если мы итерируемся по списку, то интерпретатор сразу выделяет массив нужного размера раз ему уже известна длина исходного массива??
Нет. И мы не знаем длину финального массива, внутри обхода списка могут быть условия
источник

GB

Grigory Bakunov in Moscow Python
(x for x in arr if x>5)
источник

IT

Ivan Tsyganov in Moscow Python
только это generator expression)
источник

GB

Grigory Bakunov in Moscow Python
Скобки поменяй
источник

AS

Alexey Starkov in Moscow Python
Grigory Bakunov
Это обычное поведение, стандартное. Не понимаю даж в чем тут вопрос может быть
мне показалось необычным что
>>> var = 1
>>> locals()['var']
1
>>> for i in range(1):
...     print(locals()['var'])
...
1
>>> [locals()['var'] for _ in range(1)]
Traceback (most recent call last):
 File "<input>", line 1, in <module>
   [locals()['var'] for _ in range(1)]
 File "<input>", line 1, in <listcomp>
   [locals()['var'] for _ in range(1)]
KeyError: 'var'
>>>

я полез читать доки и не нашел упоминаний про то что comprehension заводит свой scope, вот и спросил :)
источник

AS

Alexey Starkov in Moscow Python
Grigory Bakunov
Конечно заводят, надо же где-то переменные держать
ну это тоже не совсем очевидно, переменные можно в enclosing scope держать например
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Grigory Bakunov
Нет. И мы не знаем длину финального массива, внутри обхода списка могут быть условия
а если их нет
источник

IT

Ivan Tsyganov in Moscow Python
то объект по которому итерируемся может быть генератором
источник

СК

Сергей Козλов ⚡️🧙🏻‍♂️ in Moscow Python
Ivan Tsyganov
то объект по которому итерируемся может быть генератором
ну я говорю про листы 😊 Я понимаю, что у генератора или с фильтром то не получу длину будущего листа
источник