170 похожих чатов

Добрый день Можно ли использовать декоратор не во время создании функции

а во время её вызова?
не так
@decorator
def func():

а вот так
def func():


@decorator
func()

43 ответов

20 просмотров

ты понимаешь, как работают декораторы?

да

11.11.22-Patronovich Автор вопроса
Алиса Кассель-Королёва
ты понимаешь, как работают декораторы?

можно назвать это мето методом или оберткой над методом.Есть как поправить или дополнить?

11.11.22 Patronovich
можно назвать это мето методом или оберткой над ме...

декоратор - функция, принимающая единственным аргументом функцию и возвращающая функцию

Алиса Кассель-Королёва
декоратор - функция, принимающая единственным аргу...

а синтаксис @decorator def func(): ... всего лишь сахар для def func(): ... func = decorator(func)

Алиса Кассель-Королёва
декоратор - функция, принимающая единственным аргу...

Вообще, не обязательно единственным и не обязательно возвращающая функцию

dkny
Вообще, не обязательно единственным и не обязатель...

> не обязательно возвращающая функцию поправлюсь: принимающая каллабл и возвращающая каллабл

Ultralord
Чего

https://docs.python.org/3/library/functools.html

yokoO q
@lru_cache

Ты меня тегнул)

Ultralord
Ты меня тегнул)

ой сорти, промазал видимо

yokoO q
@lru_cache

она может быть декоратором, а может быть фабрикой декораторов

Алиса Кассель-Королёва
https://docs.python.org/3/glossary.html?highlight=...

Интересно, но имхо, в коммьюнити в 98% случаев под термином декоратор подразумевают что-то, что можно повесить на функцию через @. Что оно там возвращает и как уже не столь важно

Алиса Кассель-Королёва
https://docs.python.org/3/glossary.html?highlight=...

https://docs.python.org/3/reference/compound_stmts.html#function >>> Decorator expressions are evaluated when the function is defined, in the scope that contains the function definition. The result must be a callable, which is invoked with the function object as the only argument. The returned value is bound to the function name instead of the function object.

Алиса Кассель-Королёва
https://docs.python.org/3/reference/compound_stmts...

Ну здесь ничего не сказано, что результат должен быть колэбл

dkny
Интересно, но имхо, в коммьюнити в 98% случаев под...

если вернуть не коллабл, будут беды с несколькими декораторами на одной функции

Tishka17
Не должен но ожидается

Кем ожидается? Я могу протипизировать свою декораторную функцию, что она вернет не колэбл, и это будет корректно

dkny
Кем ожидается? Я могу протипизировать свою декорат...

Потом эту декорированную функцию нельзя будет юзать

Tishka17
Потом эту декорированную функцию нельзя будет юзат...

Ну допустим вернет она не нон, а какой-то специальный объект. Используйте декораторы для функции ниже этого декоратора, а те, которые могут принимать обертку — выше

dkny
Ну допустим вернет она не нон, а какой-то специаль...

Почитал тред и не понимаю каким боком тут декораторы, пардон Имеется ввиду применение @decorator?

11.11.22-Patronovich Автор вопроса
Алиса Кассель-Королёва
а синтаксис @decorator def func(): ... всего...

как при помощи синтаксиса func = decorator(func) можно передать и в декоратор и в функцию парамметры?(возможно ли это?)

Алиса Кассель-Королёва
https://t.me/ru_python/1516835

Да согласен, просто не понял почему тут идет обсуждение декораторов возвращающих не-коллабл? Что вообще твм имеется ввиду)

11.11.22 Patronovich
как при помощи синтаксиса func = decorator(func) ...

Ну ты можешь это сделать, это будет функция принимающая аргументы и возвращающая декоратор

Алиса Кассель-Королёва
так? @decorator(arg) def func(another_arg): re...

это аналогично def func(another_arg): return ... func = decorator(arg)(func)

Алиса Кассель-Королёва
это аналогично def func(another_arg): return...

здесь хорошо видно, что decorator на самом деле не декоратор, а фабрика декораторов

dkny
Ну допустим вернет она не нон, а какой-то специаль...

предполагается что декоратор возвращает совместимый по интерфейсу объект. Если декорируем функцию - ожидается коллабл

11.11.22-Patronovich Автор вопроса
Алиса Кассель-Королёва
это аналогично def func(another_arg): return...

как мы передаем в func another_arg ? если arg-используется в декораторе и не равен another_arg

Tishka17
предполагается что декоратор возвращает совместимы...

Угу, не видел что-то нигде такого контекста как у процитированного собеседника

11.11.22 Patronovich
как мы передаем в func another_arg ? если arg-испо...

another_arg не передаётся в этом сниппете, так как сама функция не вызывается

Алиса Кассель-Королёва
здесь хорошо видно, что decorator на самом деле не...

но понятия «декоратор» и «фабрика декораторов» не являются взаимоисключающими, фабрика декораторов вполне может быть декоратором

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта