【发布时间】:2018-03-04 22:00:07
【问题描述】:
我正在使用第 3 方包,它从源对象上的昂贵方法调用定义结果对象:result_object = source_object.method(input_value)。
我想在函数调用中修改result_object,如下所示:
def modify_result(result_object, update_value):
result_object = source_object.method(update_value)
显然发布的代码不起作用;它只是创建一个被丢弃的本地result_object。相反,我可以:
- 在函数中将
result_object设为nonlocal,如上修改 - 扩展
result_object类并添加modify_result方法 - 还有别的吗?
一些澄清。在这种情况下,result_object 是否被认为是全球性的?更重要的是,是否有首选方法来更新result_object,以便其他功能可以访问它?
【问题讨论】:
-
你为什么不直接返回
result_object? -
@Alex 返回
result_object必然调用昂贵的方法。我想访问修改后的结果,而不是每次都调用它 -
@ConfusinglyCuriousTheThird 什么是便宜的方法?
-
您可以将
global result_object放在函数的开头,但有时会不受欢迎
标签: python methods scope functional-programming