解压函数参数

发布于 2021-01-29 17:31:10

如果一个函数接受n个参数,并且还有另一个函数返回一个n个项目的序列(或者我有一个n个项目的序列),有没有一种方法可以“映射”这两个函数(或使第一个函数将n个项目的序列作为输入和返回结果)我不想(有时可能不能)自己编辑函数并更改其参数参数和返回值类型。

def func1(x, y, z):
    return x+y+z

def func2(w):
    return [i for i in range(w,w+3)]

func1(func2( ... ))在这种情况下不能。

关注者
0
被浏览
44
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您正在寻找*args参数语法:

    >>> def foo(bar, baz, spam):
    ...     print bar, baz, spam
    ...
    >>> arguments = [1, 2, 3]
    >>> foo(*arguments)
    1, 2, 3
    

    当将参数传递给可调用对象时,任何带有*星号的表达式都将被解释为一系列位置参数,并被扩展为作为单独的参数传递给被调用对象(函数,方法等)。

    对于您的示例将是:

    func1(*func2(...))
    

    有一个等效的关键字使用**双星号(进行映射),并且您也可以在函数签名中使用相同的语法。

    请参阅有关调用表达式文档,有关函数签名镜像语法的信息,请参见有关函数定义文档



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看