1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- from functools import wraps
- from copy import deepcopy
- def no_side_effects_decorator(func):
- @wraps(func)
- def inner(*args, **kwargs):
- if isinstance(args[0], (list, dict, set)):
- # copeed_args = tuple([args[0].copy(), args[1]])\
- copeed_args = tuple([deepcopy(args[0]), args[1]])
- print(copeed_args)
- # elif isinstance(args[0], dict):
- else:
- copeed_args = args
- return func(*copeed_args, **kwargs)
- return inner
- @no_side_effects_decorator
- def add_element(data, key, value=None):
- data[key] = value
- return data
- def test(*args, **kwargs):
- print(args)
- print(args[0])
- def main():
- my_list = [1, 2, 3]
- # print('Результат вызова =', add_element(my_list, 4))
- # print('Результат вызова =', add_element(my_list, 5))
- my_dict = {1: 'Hello', 2: 'World'}
- print('Результат вызова =', add_element(my_dict, 4, 'four'))
- print(my_list)
- # print(add_element.__name__)
- # test(my_list)
- if __name__ == '__main__':
- main()
|