【问题标题】:Appendind return of a function results in None [duplicate]函数的附加返回结果为无 [重复]
【发布时间】:2019-09-02 07:56:28
【问题描述】:

我有一个返回列表的函数:

def get_all_newids() -> list:
    return list(group_dict.values())

当我尝试将此列表附加到分配时,它会分配 None:

grpids = get_all_newids().append('42')  # None

如果我在分配后追加,一切都按预期工作:

grpids = get_all_newids()
grpids.append('42')  #  ['33', '42']

只是想知道为什么会发生这种情况。有没有办法在单行中做到这一点?

【问题讨论】:

    标签: python python-3.x list function


    【解决方案1】:

    你可以在一行中完成:

    grpids = get_all_newids() + ['42']
    

    【讨论】:

      【解决方案2】:

      @eumiro 提供了一个解决方案,但是没有得到答复:

      只是想知道为什么会发生这种情况。

      因为“变异”方法在 Python 中返回 None 是惯用的(尽管不是通用的),当它们没有很好的理由返回某些东西时(例如,pop 如果不返回,那么它的用处会小得多返回它弹出的值)。

      append 将一个项目添加到列表中,并且不返回任何内容,因为附加没有固有的返回值。同样extendinsertremovereversesort

      【讨论】:

        猜你喜欢
        • 2017-12-24
        • 2019-07-31
        • 1970-01-01
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        • 2018-10-24
        • 2017-11-19
        • 2019-10-08
        相关资源
        最近更新 更多