Python-разработчики — одни из самых востребованных IT-специалистов на рынке. Они создают веб-приложения и чат-ботов, автоматизируют процессы. По данным HeadHunter, больше 8 000 компаний ищут специалистов разных уровней.
Зарегистрируйтесь на буткемп прямо сейчас и получите гайд по профессии. Из него узнаете, где используют Python, почему это идеальный язык для новичка и что думают о Python опытные разработчики. Подробная программа: https://epic.st/DHr--9
Что особенного в буткемпе по Python:
— Подходит новичкам — от вас не требуется знаний и опыта в IT.
— 4 крутых проекта для портфолио.
— Практические задания для проверки знаний.
— Живое общение со спикером.
— 5 полезных материалов в подарок.
— Бессрочный доступ к видео.
Спикер — Анастасия Борнева, руководитель направления по исследованию данных в Сбере. Опыт в программировании более 12 лет. С 2018 года — эксперт по автоматизации процессов с помощью искусственного интеллекта в Сбере.
Успейте записаться и получить подарок!
Зарегистрируйтесь на буткемп прямо сейчас и получите гайд по профессии. Из него узнаете, где используют Python, почему это идеальный язык для новичка и что думают о Python опытные разработчики. Подробная программа: https://epic.st/DHr--9
Что особенного в буткемпе по Python:
— Подходит новичкам — от вас не требуется знаний и опыта в IT.
— 4 крутых проекта для портфолио.
— Практические задания для проверки знаний.
— Живое общение со спикером.
— 5 полезных материалов в подарок.
— Бессрочный доступ к видео.
Спикер — Анастасия Борнева, руководитель направления по исследованию данных в Сбере. Опыт в программировании более 12 лет. С 2018 года — эксперт по автоматизации процессов с помощью искусственного интеллекта в Сбере.
Успейте записаться и получить подарок!
Нет результата
Это ошибка в обработке CPython yield в генераторах и пониманиях.
Источник и объяснение можно найти здесь: https://stackoverflow.com/questions/32139885/yield-in-list-comprehensions-and-generator-expressions
Сообщение об ошибке по теме:https://bugs.python.org/issue10544
Python 3.8+ больше не допускает yield понимания внутри списка и выдает SyntaxError.
Это ошибка в обработке CPython yield в генераторах и пониманиях.
Источник и объяснение можно найти здесь: https://stackoverflow.com/questions/32139885/yield-in-list-comprehensions-and-generator-expressions
Сообщение об ошибке по теме:https://bugs.python.org/issue10544
Python 3.8+ больше не допускает yield понимания внутри списка и выдает SyntaxError.
Уступая от ... return! (ч.1)
Куда "wtf" делся? Это из-за какого-то особого эффекта yield from?
Начиная с Python 3.3, стало возможным использовать return инструкцию со значениями внутри генераторов (см. PEP380). В официальных документах говорится, что,
"... return expr в генераторе возникают причины StopIteration(expr), которые возникают при выходе из генератора".
Куда "wtf" делся? Это из-за какого-то особого эффекта yield from?
Начиная с Python 3.3, стало возможным использовать return инструкцию со значениями внутри генераторов (см. PEP380). В официальных документах говорится, что,
"... return expr в генераторе возникают причины StopIteration(expr), которые возникают при выходе из генератора".
Уступая от ... return! (ч.2)
В случае с some_func(3), StopIteration возникает в начале из-за return заявления. StopIteration Исключение автоматически перехватывается внутри list(...) оболочки и for цикла. Следовательно, два приведенных выше фрагмента приводят к пустому списку.
Чтобы получить ["wtf"] от генератора some_func, нам нужно перехватить StopIteration исключение,
В случае с some_func(3), StopIteration возникает в начале из-за return заявления. StopIteration Исключение автоматически перехватывается внутри list(...) оболочки и for цикла. Следовательно, два приведенных выше фрагмента приводят к пустому списку.
Чтобы получить ["wtf"] от генератора some_func, нам нужно перехватить StopIteration исключение,
Nan-рефлексивность (ч.1)
'inf' и 'nan' - это специальные строки (без учета регистра), которые при явном приведении к float типу используются для представления математической "бесконечности" и "не числа" соответственно.
Поскольку, согласно стандартам IEEE NaN != NaN, соблюдение этого правила нарушает предположение о рефлексивности элемента коллекции в Python, т. Е. если x является частью коллекции, подобной list, реализации, подобные comparison, основаны на предположении, что x == x.
'inf' и 'nan' - это специальные строки (без учета регистра), которые при явном приведении к float типу используются для представления математической "бесконечности" и "не числа" соответственно.
Поскольку, согласно стандартам IEEE NaN != NaN, соблюдение этого правила нарушает предположение о рефлексивности элемента коллекции в Python, т. Е. если x является частью коллекции, подобной list, реализации, подобные comparison, основаны на предположении, что x == x.
Nan-рефлексивность (ч.2)
Из-за прошлого предположения сначала сравнивается идентификатор (поскольку это быстрее) при сравнении двух элементов, а значения сравниваются только тогда, когда идентификаторы не совпадают.
Поскольку идентификаторы x и y различны, учитываются значения, которые также различны; следовательно, сравнение возвращается False на этот раз.
Из-за прошлого предположения сначала сравнивается идентификатор (поскольку это быстрее) при сравнении двух элементов, а значения сравниваются только тогда, когда идентификаторы не совпадают.
Поскольку идентификаторы x и y различны, учитываются значения, которые также различны; следовательно, сравнение возвращается False на этот раз.
Изменение неизменяемого! (ч.1)
Это может показаться тривиальным, если вы знаете, как работают ссылки в Python.
Цитирую из https://docs.python.org/3/reference/datamodel.html
Неизменяемые последовательности Объект неизменяемого типа последовательности не может измениться после его создания. (Если объект содержит ссылки на другие объекты, эти другие объекты могут быть изменяемыми и могут быть изменены; однако коллекция объектов, на которые непосредственно ссылается неизменяемый объект, не может измениться.)
Это может показаться тривиальным, если вы знаете, как работают ссылки в Python.
Цитирую из https://docs.python.org/3/reference/datamodel.html
Неизменяемые последовательности Объект неизменяемого типа последовательности не может измениться после его создания. (Если объект содержит ссылки на другие объекты, эти другие объекты могут быть изменяемыми и могут быть изменены; однако коллекция объектов, на которые непосредственно ссылается неизменяемый объект, не может измениться.)
Новички-бэкендеры часто выбирают между Java и Python. На бесплатном вебинаре Яндекс Практикума разберёмся, чем отличаются эти языки.
→ 22 мая в 19:00
Вести вебинар будут действующие программисты — эксперты и выпускники Практикума. Они расскажут:
— что это за языки и зачем нужны;
— какой язык подойдёт для игр, корпоративных приложений, машинного обучения или автоматизации;
— какие сложности есть в изучении;
— как выбрать язык под себя;
— какие специалисты нужнее на рынке труда.
В конце встречи можно будет задать вопросы и получить совет.
→ Приходите на встречу, чтобы сделать первый шаг к карьере.
→ 22 мая в 19:00
Вести вебинар будут действующие программисты — эксперты и выпускники Практикума. Они расскажут:
— что это за языки и зачем нужны;
— какой язык подойдёт для игр, корпоративных приложений, машинного обучения или автоматизации;
— какие сложности есть в изучении;
— как выбрать язык под себя;
— какие специалисты нужнее на рынке труда.
В конце встречи можно будет задать вопросы и получить совет.
→ Приходите на встречу, чтобы сделать первый шаг к карьере.
Исчезающая переменная из внешней области (ч.1)
Когда исключение было назначено с использованием as target, оно очищается в конце except предложения.
Это означает, что исключению должно быть присвоено другое имя, чтобы иметь возможность ссылаться на него после предложения except. Исключения удаляются, потому что с привязкой к ним обратной трассировки они образуют ссылочный цикл с фреймом стека, сохраняя все локальные файлы в этом фрейме живыми до тех пор, пока не произойдет следующая сборка мусора.
Когда исключение было назначено с использованием as target, оно очищается в конце except предложения.
Это означает, что исключению должно быть присвоено другое имя, чтобы иметь возможность ссылаться на него после предложения except. Исключения удаляются, потому что с привязкой к ним обратной трассировки они образуют ссылочный цикл с фреймом стека, сохраняя все локальные файлы в этом фрейме живыми до тех пор, пока не произойдет следующая сборка мусора.
Исчезающая переменная из внешней области (ч.2)
Эти предложения не ограничены в Python. Все в примере присутствует в той же области видимости, а переменная e была удалена из-за выполнения except предложения. То же самое не относится к функциям, которые имеют свои отдельные внутренние области.
В Python 2.x имя переменной e присваивается Exception() экземпляру, поэтому при попытке печати ничего не выводится.
Эти предложения не ограничены в Python. Все в примере присутствует в той же области видимости, а переменная e была удалена из-за выполнения except предложения. То же самое не относится к функциям, которые имеют свои отдельные внутренние области.
В Python 2.x имя переменной e присваивается Exception() экземпляру, поэтому при попытке печати ничего не выводится.
Давайте посмотрим, сможете ли вы догадаться об этом? (ч.1)
Согласно справочнику по языку Python, операторы присваивания имеют вид
+ In (target_list "=")+ означает, что может быть один или более целевых списков. В данном случае целевыми списками являются a, b и a[b] (обратите внимание, что список выражений равен ровно одному, что в нашем случае и есть {}, 5).
После вычисления списка выражений его значение распаковывается в целевые списки слева направо. Итак, в нашем случае сначала {}, 5 кортеж распаковывается в a, b, и теперь у нас есть a = {} и b = 5.
a теперь присвоен {}, который является изменяемым объектом.
Согласно справочнику по языку Python, операторы присваивания имеют вид
(target_list "=")+ (expression_list | yield_expression)Оператор присваивания вычисляет список выражений (помните, что это может быть одно выражение или список, разделенный запятыми, последний выдает кортеж) и присваивает отдельный результирующий объект каждому из целевых списков слева направо.
+ In (target_list "=")+ означает, что может быть один или более целевых списков. В данном случае целевыми списками являются a, b и a[b] (обратите внимание, что список выражений равен ровно одному, что в нашем случае и есть {}, 5).
После вычисления списка выражений его значение распаковывается в целевые списки слева направо. Итак, в нашем случае сначала {}, 5 кортеж распаковывается в a, b, и теперь у нас есть a = {} и b = 5.
a теперь присвоен {}, который является изменяемым объектом.
Давайте посмотрим, сможете ли вы догадаться об этом? (ч.2)
Теперь мы устанавливаем ключ 5 в словаре на кортеж, ({}, 5) создающий циклическую ссылку ({...} в выходных данных ссылается на тот же объект, на который a уже ссылается). Другим более простым примером циклической ссылки может быть.
Аналогично обстоит дело в нашем примере (a[b][0] это тот же объект, что и a)
Теперь мы устанавливаем ключ 5 в словаре на кортеж, ({}, 5) создающий циклическую ссылку ({...} в выходных данных ссылается на тот же объект, на который a уже ссылается). Другим более простым примером циклической ссылки может быть.
Аналогично обстоит дело в нашем примере (a[b][0] это тот же объект, что и a)
Превышен лимит на преобразование целых строк
Этот вызов int() отлично работает в Python 3.10.6 и вызывает ошибку ValueError в Python 3.10.8. Обратите внимание, что Python все еще может работать с большими целыми числами. Ошибка возникает только при преобразовании между целыми числами и строками.
К счастью, вы можете увеличить предел допустимого количества цифр, когда ожидаете, что операция превысит его. Для этого вы можете использовать один из следующих:
Флаг командной строки -X int_max_str_digits
Функция set_int_max_str_digits() из модуля sys
Переменная среды PYTHONINTMAXSTRDIGITS
Этот вызов int() отлично работает в Python 3.10.6 и вызывает ошибку ValueError в Python 3.10.8. Обратите внимание, что Python все еще может работать с большими целыми числами. Ошибка возникает только при преобразовании между целыми числами и строками.
К счастью, вы можете увеличить предел допустимого количества цифр, когда ожидаете, что операция превысит его. Для этого вы можете использовать один из следующих:
Флаг командной строки -X int_max_str_digits
Функция set_int_max_str_digits() из модуля sys
Переменная среды PYTHONINTMAXSTRDIGITS
Упрямая del операция (ч.1)
Фух, наконец-то удалил. Возможно, вы уже догадались, что спасло del от вызова при нашей первой попытке удаления x.
del x напрямую не вызывает x.del().
При del x обнаружении Python удаляет имя x из текущей области видимости и уменьшает на 1 количество ссылок на объект, на который x ссылается. del() вызывается только тогда, когда количество ссылок на объект достигает нуля.
Фух, наконец-то удалил. Возможно, вы уже догадались, что спасло del от вызова при нашей первой попытке удаления x.
del x напрямую не вызывает x.del().
При del x обнаружении Python удаляет имя x из текущей области видимости и уменьшает на 1 количество ссылок на объект, на который x ссылается. del() вызывается только тогда, когда количество ссылок на объект достигает нуля.