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

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

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

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


@decorator
func()

43 ответов

28 просмотров

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

да

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 на самом деле не...

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта