Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.08.2021
Сообщений: 112

Не работает декоратор

21.12.2024, 10:21. Показов 586. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите, пожалуйста, почему не работает декоратор для

@uppercase_elements
def my_func():
return ['monarch', 'Touch', 'officiaL', 'DangerouS', 'breathe']

print(my_func())

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def uppercase_elements(func):
    """Ваша задача написать логику работы декоратора uppercase_elements, который умеет работать с функциями,
    возвращающими коллекции элементов. Задача декоратора uppercase_elements преобразовать
    каждый строковый элемент коллекции к заглавному регистру. В случае, если оригинальная функция возвращает словарь,
    то элементом считаем только строковые ключи словаря.
    Элементы, не являющиеся строкой, не должны изменяться декоратором uppercase_elements
    Гарантируется, что коллекции, возвращаемые оригинальной функцией, не являются вложенными"""
 
    def wrapper(*args, **kwargs):
        res = func(*args, **kwargs)
        if isinstance(res, list):
            li = []
            for i in res:
                li.append(*[i.upper() if isinstance(i, str) in res else i])
            return li
        else:
            new_res = {(k.upper() if isinstance(k, str) else k): v for (k, v) in res.items()}
            return new_res
 
    return wrapper
 
 
@uppercase_elements
def my_func(name, surname):
    return ['temple', 'store', name, surname, *[1, 2, 3]]
 
 
print(my_func('Gerard', 'Pique'))
 
 
@uppercase_elements
def my_func(**kwargs):
    return {1: 'one', 2: 'store', 'three': 3, 'four': 4} | kwargs
 
 
print(my_func(**{'Five': 5, 'sIx': 6}))
 
 
@uppercase_elements
def my_func():
    return ['monarch', 'Touch', 'officiaL', 'DangerouS', 'breathe']
 
 
print(my_func())
Ответы в Pycharm:

['TEMPLE', 'STORE', 'GERARD', 'PIQUE', 1, 2, 3]
{1: 'one', 2: 'store', 'THREE': 3, 'FOUR': 4, 'FIVE': 5, 'SIX': 6}
['monarch', 'Touch', 'officiaL', 'DangerouS', 'breathe']
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2024, 10:21
Ответы с готовыми решениями:

Написать простой декоратор, используя декоратор wraps, для передачи данных от оригинальной функции
На python Написать простой декоратор, используя декоратор wraps, для передачи данных от оригинальной функции. Реализовать простую функцию...

Декоратор @property ООП прошу объяснить как это работает
Всем привет! Изучив основы python, я начал знакомиться с ООП, и на моём пути встала тема с декоратором @property. Как объясняют в видео и...

Декоратор
Создать интерфейс Поиск слова в тексте, описывающий метод поиска слова в тексте. Создать класс, выполняющий поиск по полному совпадению с...

1
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
21.12.2024, 10:41
Лучший ответ Сообщение было отмечено Vladigors как решение

Решение

Цитата Сообщение от Vladigors Посмотреть сообщение
Подскажите, пожалуйста, почему не работает декоратор для
Потому что неверно обрабатываете список.
Вот рабочий вариант декоратора.
Python
1
2
3
4
5
6
7
8
9
def uppercase_elements(func):
 
    def wrapper(*args, **kwargs):
        res = func(*args, **kwargs)
        if isinstance(res, list):
            return [i.upper() if isinstance(i, str) else i for i in res]
        return {(k.upper() if isinstance(k, str) else k): v for (k, v) in res.items()}
 
    return wrapper
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2024, 10:41
Помогаю со студенческими работами здесь

Декоратор
Не понимаю, как в код добавить декоратор. def avg(*a): return sum(a)/len(a) print(avg(1,2,3,4,5))

Декоратор
function spy(func) { function wrapper(...args) { wrapper.calls.push(args); return func.apply(this, arguments); ...

Декоратор
print("Как твои дела? Хорошо") def how_are_you(func): print("А у меня не очень. Ладно держи свою функцию") @how_are_you ...

Декоратор
всем привет, задание такое # Написать декоратор, который будет логировать (записывать в лог файл) # ошибки из декорируемой функции и...

Декоратор
Нужно создать декоратор который будет обрамлять введенный текст знаком "=". Вывод должен быть таким: ========== =Hello, World!= ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru