TelenkovDmitry 3 månader sedan
förälder
incheckning
3d3281e262
1 ändrade filer med 93 tillägg och 3 borttagningar
  1. 93 3
      courses/python_func/decorator.py

+ 93 - 3
courses/python_func/decorator.py

@@ -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__':