如何在Python中编写带有输出参数(按引用调用)的函数?
Python语言中的所有参数(参数)都是按引用传递的。这意味着,如果您在函数内更改参数所引用的内容,则更改还会反映在调用函数中。
通过以下方式实现 −
返回结果的元组
示例
在本示例中,我们将返回结果的元组 −
#函数定义
def demo(val1, val2):
val1 = '新的值'
val2 = val2 + 1
return val1, val2
x, y = '旧的值', 5
#函数调用
print(demo(x, y))
输出
('新的值', 6)
传递可变对象
示例
在本示例中,我们将传入可变对象 −
#函数定义
def demo2(a):
#'a'引用一个可变列表
a[0] = '新值'
#这会更改共享对象
a[1] = a[1] + 1
args = ['旧的值', 5]
demo2(args)
print(args)
输出
['新值', 6]
传递被改变的字典
示例
在本示例中,我们将传入一个字典 −
def demo3(args):
#args是一个可变字典
args['val1'] = '新值'
args['val2'] = args['val2'] + 1
args = {'val1': '旧的值', 'val2': 5}
#函数调用
demo3(args)
print(args)
输出
{'val1': '新值', 'val2': 6}
类实例中的数值
示例
在本示例中,我们将把数值打包在类实例中 −
类 Namespace:
def __init__(self, **args):
for key, value in args.items():
setattr(self, key, value)
def func4(args):
# args是一个可变的Namespace
args.val1 = 'new-value'
args.val2 = args.val2 + 1
args = Namespace(val1='old-value', val2=5)
# 函数调用
func4(args)
print(vars(args))
输出
{'val1': 'new-value', 'val2': 6}