TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #64 · 6 апр.

Думаете ˍˍfutureˍˍ нужен только для Python2? Нет, это процесс постоянный. В Python3 тоже есть свои "future". from __future__ import annotations Похоже на бекпорт аннотаций типов из Python3 в Python2, но это не так. Это имплементация PEP 563 Postponed Evaluation of Annotations которая будет дефолтной только в Python4. Что делает этот future? Если вы активно используете аннотации типов в Python3 то знаете, как они обычно выглядят. def func(x: int) -> int: return x * 2 При этом у объекта функции появляется атрибут ˍˍannotationsˍˍ >>> print(func.__annotations__) {'x': <class 'int'>, 'return': <class 'int'>} Видно, что в этой переменной находится словарь. Ключ словаря это имя аргумента функции, а значение это непосредственно ссылка на тип. А так же есть тип для return. В более сложных случаях это будут инстансы объектов из модуля typing from typing import List def func(x: int) -> List[int]: return [x] * 10 >>> print(func.__annotations__) {'x': <class 'int'>, 'return': typing.List[int]} Что происходит если мы импортим annotations из ˍˍfutureˍˍ? Изменяется способ определения аннотаций. Дело в том, что все эти инстансы типов создаются в момент определения функции когда модуль импортируется. Так же как и значения по умолчанию они должны исполниться и вернуть какой-то объект. В нашем случае это ссылка на тип int или инстанс класса typing.List. И тут возникает две проблемы, описаные в PEP. Если коротко то звучит это так: 1. Если в подсказке указывается тип, который еще не определён, это вызовет ошибку. Приходится описывать его просто строкой или менять порядок определения. 2. Определение ссылок на типы порой занимает много времени, так как требуется импорт модулей и создание инстансов. Но если вы импортируете наш future, то активируется так называемое отложенное определение ссылок (Postponed Evaluation of Annotations). В результате вместо создания инстансов и ссылок в ˍˍannotationsˍˍ просто записывается строка с этой подсказкой. from __future__ import annotations def func(x: int) -> int: return x * 2 >>> print(func.__annotations__) {'x': 'int', 'return': 'int'} В дальнейшем ваши IDE и ресолверы типов могут брать эти строки и исполнять самостоятельно где то на фоне, когда все необходимые типы уже определены. Для преобразования этих строк в привычный вид есть готовая функция >>> import typing >>> typing.get_type_hints(func) {'x': <class 'int'>, 'return': <class 'int'>} Но делать это можно уже только по необходимости. #pep

Hashtags

Резултати

Пронајдени 10,051 слични објави

Пребарај: #ai

当前筛选 #ai清除筛选

【MiniMax上线Music 2.6:大幅提升生成延迟、音乐控制、声学品质】 MiniMax正式发布新一代音乐生成模型Music 2.6。此次更新从底层引擎到创作工具实现全维度进化,大幅提升生成延迟、音乐控制、声学品质,推出“Cover”创作功能和面向 #AI Agent生态的Music Skill,并面向全球创作者开启为期14天的免费内测。Music 2.6对底层生成架构进行重构,最直观的变化体现在速度上——首包延迟大幅降至20秒以内。这意味着创作者输入文字灵感后,只需一次深呼吸的时间就能收到初步音频反馈。(澎湃)

Hashtags

123•••50•••100•••150•••200•••250•••300•••350•••400•••450•••500•••550•••600•••650•••700•••750•••800•••837838
ПретходнаСтраница 1 од 838Следна