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

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

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

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


@decorator
func()

43 ответов

25 просмотров

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

да

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

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

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта