Интерпретатор теперь указывает на причину ошибки точнее
В новой версии Python 3.11.4 при отображении пути ошибки (Traceback) вы легче сможете обнаружить причину ошибки, потому что символами ^ теперь выделяется конкретный объект, а не вся строка:
Подробнее о релизе здесь.
#лучшиепрактики
В новой версии Python 3.11.4 при отображении пути ошибки (Traceback) вы легче сможете обнаружить причину ошибки, потому что символами ^ теперь выделяется конкретный объект, а не вся строка:
Traceback (most recent call last):
File "distance.py", line 11, in <module>
print(manhattan_distance(p1, p2))
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "distance.py", line 6, in manhattan_distance
return abs(point_1.x - point_2.x) + abs(point_1.y)
^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'x'
Подробнее о релизе здесь.
#лучшиепрактики
👍21❤1
PEP8: словно и не менялось ничего с прошлой версии
В своей статье Егор Егоров доступным языком обозревает обновления в стандарте PEP версии 8. Вы узнаете, какую максимальную длину строки рекомендуют создатели, для каких объектов ЯП при именовании использовать строчные, а для каких — заглавные буквы. Узнаете, для чего придумали линтеры.
А вы бы добавили какой-нибудь принцип? Поделитесь в комментариях.
#PEP
В своей статье Егор Егоров доступным языком обозревает обновления в стандарте PEP версии 8. Вы узнаете, какую максимальную длину строки рекомендуют создатели, для каких объектов ЯП при именовании использовать строчные, а для каких — заглавные буквы. Узнаете, для чего придумали линтеры.
А вы бы добавили какой-нибудь принцип? Поделитесь в комментариях.
#PEP
👎10❤2
pyproject.toml вместо pyproject.cfg
В PEP-518 предложили хранить конфиги для всех инструментов в файле pyproject.toml, в разделе tool.TOOL_NAME. Например:
[tool.mypy]
На данный момент почти все популярные инструменты так или иначе поддерживают pyproject.toml в качестве конфигурационного файла: mypy, pytest, cover, isort, bandit, tox и т. д. Единственное исключение — flake8.
До .toml многие инструменты использовали setup.cfg для той же цели, но этот формат имеет несколько недостатков: он плохо стандартизирован, и единственным поддерживаемым типом значений является строка.
#PEP
В PEP-518 предложили хранить конфиги для всех инструментов в файле pyproject.toml, в разделе tool.TOOL_NAME. Например:
[tool.mypy]
файлы = ["мой_проект"]
версия_python = 3.8
На данный момент почти все популярные инструменты так или иначе поддерживают pyproject.toml в качестве конфигурационного файла: mypy, pytest, cover, isort, bandit, tox и т. д. Единственное исключение — flake8.
До .toml многие инструменты использовали setup.cfg для той же цели, но этот формат имеет несколько недостатков: он плохо стандартизирован, и единственным поддерживаемым типом значений является строка.
#PEP
❤9👍2
Typing Self: интуитивно понятный способ аннотирования методов, возвращающих экземпляр своего класса
Ведёт себя так же, как TypeVar, но более краток и прост:
Допустим, мы создали метод get_scale(), который возвращает экземпляр того же класса Scale с помощью self:
Один из способов обозначить тип возвращаемого значения — указать его как текущий класс Shape. Использование этого метода заставляет средство проверки типов выводить тип Shape, как и ожидалось:
PEP-673
#pep
Ведёт себя так же, как TypeVar, но более краток и прост:
Допустим, мы создали метод get_scale(), который возвращает экземпляр того же класса Scale с помощью self:
class Shape:
def set_scale(self, scale: float):
self.scale = scale
return self
Shape().set_scale(0.5) # => Экземпляр класса Shape
Один из способов обозначить тип возвращаемого значения — указать его как текущий класс Shape. Использование этого метода заставляет средство проверки типов выводить тип Shape, как и ожидалось:
class Shape:
def set_scale(self, scale: float) -> Shape:
self.scale = scale
return self
Shape().set_scale(0.5) # => Shape
...
PEP-673
#pep
👍6👎5
PEP 731: функции Python внутри другого языка
13 октября на официальном сайте Python вышла черновая версия нового PEP (предложения по развитию Python). Она посвящена развитию API, который позволяет вызывать Py-функции прямо в коде на С. Это в свою очередь, позволяет создавать высокоскоростные низкоуровневые интерфейсы между Python и другими языками.
Интересная инициатива, учитывая разнообразие пользователей ЯП. В последних интервью ван Россум неоднократно упоминает, что именно противоречия в рамках комьюнити замедляют развитие языка.
Как думаете, получится у этой рабочей группы Core Developers?
#pep
13 октября на официальном сайте Python вышла черновая версия нового PEP (предложения по развитию Python). Она посвящена развитию API, который позволяет вызывать Py-функции прямо в коде на С. Это в свою очередь, позволяет создавать высокоскоростные низкоуровневые интерфейсы между Python и другими языками.
Интересная инициатива, учитывая разнообразие пользователей ЯП. В последних интервью ван Россум неоднократно упоминает, что именно противоречия в рамках комьюнити замедляют развитие языка.
Как думаете, получится у этой рабочей группы Core Developers?
#pep
❤8
Вышел Python 3.14.0a4
Среди фичей:
— «Ленивая» интепретация аннотаций (на скриншоте, см. документацию);
— API языка C вместо C-подобных методов и функций;
— Депрекатнули PGP-подписи и проч.
Это ранняя версия ЯП для тестирования разработчиками.
Release Note
#факт
@zen_of_python
Среди фичей:
— «Ленивая» интепретация аннотаций (на скриншоте, см. документацию);
— API языка C вместо C-подобных методов и функций;
— Депрекатнули PGP-подписи и проч.
Это ранняя версия ЯП для тестирования разработчиками.
Release Note
#факт
@zen_of_python
👍5❤2