重构python函数以返回元组而不是单个变量的最佳实践?

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中这样做.我还可以声明另一个函数Ge​​tEventsAndHeader(),但是这个函数很难复制.

建议?

Mar*_*ers 8

函数重命名GetEventsAndHeader(),并添加一个新函数GetEvents():

def GetEvents(*args, **kw):
    return GetEventsAndHeader(*args, **kw)[0]
Run Code Online (Sandbox Code Playgroud)

或者只是咬紧牙关并更新调用GetEvents()和调整该代码的所有代码,以使用索引的返回值[0]或使用标题.


dor*_*ian 6

如果您不是绝对需要返回元组,只需在返回的列表中添加一个属性:

class EventList(list):
    pass


def GetEvents(file_path):

    ...

    events = EventList(events)
    events.event_header = some_header
    return events
Run Code Online (Sandbox Code Playgroud)