|
@@ -96,15 +96,98 @@ def uppercase_elements(func):
|
|
def inner(*args, **kwargs):
|
|
def inner(*args, **kwargs):
|
|
res = func(*args, **kwargs)
|
|
res = func(*args, **kwargs)
|
|
if isinstance(res, dict):
|
|
if isinstance(res, dict):
|
|
- return {key:value for key, value in res.items()}
|
|
|
|
- return inner
|
|
|
|
|
|
+ my_dict = {}
|
|
|
|
+ for key, value in res.items():
|
|
|
|
+ if isinstance(key, str):
|
|
|
|
+ my_dict[key.upper()] = value
|
|
|
|
+ else:
|
|
|
|
+ my_dict[key] = value
|
|
|
|
+ return my_dict
|
|
|
|
+ else:
|
|
|
|
+ my_list = []
|
|
|
|
+ for x in res:
|
|
|
|
+ if isinstance(x, str):
|
|
|
|
+ my_list.append(x.upper())
|
|
|
|
+ else:
|
|
|
|
+ my_list.append(x)
|
|
|
|
+ return my_list
|
|
|
|
+
|
|
|
|
+ # return {key:value for key, value in res.items()}
|
|
|
|
|
|
|
|
+ return inner
|
|
|
|
+
|
|
|
|
|
|
@uppercase_elements
|
|
@uppercase_elements
|
|
def foo_1(**kwargs):
|
|
def foo_1(**kwargs):
|
|
return {1: 'one', 2: 'store', 'three': 3, 'four': 4} | kwargs
|
|
return {1: 'one', 2: 'store', 'three': 3, 'four': 4} | kwargs
|
|
|
|
|
|
|
|
|
|
|
|
+@uppercase_elements
|
|
|
|
+def my_func():
|
|
|
|
+ return ['monarch', 'Touch', 'officiaL', 'DangerouS', 'breathe']
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def first_validator(func):
|
|
|
|
+ def my_wrapper(*args, **kwargs):
|
|
|
|
+ print(f"Начинаем важную проверку")
|
|
|
|
+ if len(args) == 3:
|
|
|
|
+ func(*args, **kwargs)
|
|
|
|
+ else:
|
|
|
|
+ print(f"Важная проверка не пройдена")
|
|
|
|
+ return None
|
|
|
|
+ print(f"Заканчиваем важную проверку")
|
|
|
|
+ return my_wrapper
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def second_validator(func):
|
|
|
|
+ def my_wrapper(*args, **kwargs):
|
|
|
|
+ print(f"Начинаем самую важную проверку")
|
|
|
|
+ if kwargs.get('name') == 'Boris':
|
|
|
|
+ func(*args)
|
|
|
|
+ else:
|
|
|
|
+ print(f"Самая важная проверка пройдена")
|
|
|
|
+ return None
|
|
|
|
+ print(f"Заканчиваем самую важную проверку")
|
|
|
|
+ return my_wrapper
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@second_validator
|
|
|
|
+@first_validator
|
|
|
|
+def sum_values(*args):
|
|
|
|
+ print(f'Получили результат равный {sum(args)}')
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def validate_all_args_str(func):
|
|
|
|
+ def wrapper(*args, **kwargs):
|
|
|
|
+ if len([True for x in args if type(x) == str]) == len(args):
|
|
|
|
+ return func(*args, **kwargs)
|
|
|
|
+ else:
|
|
|
|
+ print('Все аргументы должны быть строками')
|
|
|
|
+ return wrapper
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def validate_all_kwargs_int_pos(func):
|
|
|
|
+ def wrapper(*args, **kwargs):
|
|
|
|
+ if len([True for val in kwargs.values() if isinstance(val, int) and val > 0]) == len(kwargs):
|
|
|
|
+ return func(*args, **kwargs)
|
|
|
|
+ else:
|
|
|
|
+ print("Все именованные аргументы должны быть положительными числами")
|
|
|
|
+ return wrapper
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+@validate_all_kwargs_int_pos
|
|
|
|
+def concatenate(*args, **kwargs):
|
|
|
|
+ result = ""
|
|
|
|
+ for arg in args + tuple(kwargs.values()):
|
|
|
|
+ result += str(arg)
|
|
|
|
+ return result
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def filter_even(func):
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
def main():
|
|
def main():
|
|
# res = say_hello_to('Vasya', 'Ivanov')
|
|
# res = say_hello_to('Vasya', 'Ivanov')
|
|
# print(f'{res=}')
|
|
# print(f'{res=}')
|
|
@@ -115,8 +198,15 @@ def main():
|
|
# print(multiply(3, 5))
|
|
# print(multiply(3, 5))
|
|
|
|
|
|
# print(get_sum_kwargs_values(a=4, b=5, d=3, t=6, r=8))
|
|
# print(get_sum_kwargs_values(a=4, b=5, d=3, t=6, r=8))
|
|
- print(foo_1(**{'Five': 5, 'sIx': 6}))
|
|
|
|
|
|
+
|
|
|
|
+ # print(foo_1(**{'Five': 5, 'sIx': 6}))
|
|
|
|
+ # print(my_func())
|
|
|
|
+
|
|
|
|
+ # sum_values(70, 1, 6, name='Boris')
|
|
|
|
|
|
|
|
+ # print(concatenate("Ну", "Когда", "Уже", "Я", "Выучу", "Питон?"))
|
|
|
|
+ # print(concatenate(a="Я", b="Выучу", c="Этот", d="Питон", e="!"))
|
|
|
|
+ print(concatenate(a=10, b=20, c=50))
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
if __name__ == '__main__':
|