esc*_*ter 2 python tuples return-value
我在大型代码库中重构python函数.目前,它看起来像:
def GetEvents(file_path):
...
return events #a list of Event objects
Run Code Online (Sandbox Code Playgroud)
一堆代码依赖于此函数已经返回列表对象.但是,我想重构它,所以它返回:
def GetEvents(file_path):
...
return (events, event_header)
Run Code Online (Sandbox Code Playgroud)
event_header是对这组事件的一点描述.但是,这将严重破坏当前需要列表的所有代码,而不是返回元组.在任何其他语言中,我都会通过引用传递event_header,但我不认为我可以在Python中这样做.我还可以声明另一个函数GetEventsAndHeader(),但是这个函数很难复制.
建议?
将函数重命名为GetEventsAndHeader(),并添加一个新函数GetEvents():
def GetEvents(*args, **kw):
return GetEventsAndHeader(*args, **kw)[0]
Run Code Online (Sandbox Code Playgroud)
或者只是咬紧牙关并更新调用GetEvents()和调整该代码的所有代码,以使用索引的返回值[0]或使用标题.
如果您不是绝对需要返回元组,只需在返回的列表中添加一个属性:
class EventList(list):
pass
def GetEvents(file_path):
...
events = EventList(events)
events.event_header = some_header
return events
Run Code Online (Sandbox Code Playgroud)