def my_func(x, y):
# x и y локальные имена, которым присвоены новые объекты
x = 'новое значение'
y = y + 1
# возвращаем новые значения
return x, y
a, b = 'старое значение', 9
a, b = my_func(a, b)
print(a, b)
результат: новое значение 10
def func1(a):
# 'a' ссылается на изменяемый список
a[0] = 'новое значение'
a[1] = a[1] + 1
args = ['старое значение', 9]
func1(args)
print(args)
результат: ['новое значение', 10]
def func2(args):
# args - изменяемый словарь
args['a'] = 'новое значение'
args['b'] = args['b'] + 1
args = {'a': 'старое значение', 'b': 9}
func2(args)
print(args)
результат: {'a': 'новое значение', 'b': 10}
class MyNamespace:
def __init__(self, /, **args):
for key, value in args.items():
setattr(self, key, value)
def func3(args):
args.a = 'новое значение'
args.b = args.b + 1
args = Namespace(a='старое значение', b=9)
func3(args)
vars(args)
результат:
{'a': 'новое значение', 'b': 10}