Python变参数高阶函数

vptzau2j  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(137)

我正在尝试写一个高阶函数,它的参数数量是可变的。

def higher(fnc, args):
    print(f"Calling function {fnc}")
    fnc(argv)

def one_arg(only_arg):
    print(f"Here is the only arg {only}")

def two_arg(first, second):
    print(f"Here is the first {first} And here is the second {second}")

higher(one_arg, "Only one argument")
higher(two_arg, "Here's one arg", "and Another one")

是否可以在不更改函数one_arg()或two_arg()的情况下执行此操作?
我已经研究过使用*argv,但我认为我对它的理解还不够透彻,也没有找到在不更改这两个函数的情况下使用它的方法

h6my8fg2

h6my8fg21#

您可以只使用 * 来定义多个参数。

def higher(fnc, *args):
    print(f"Calling function {fnc}")
    fnc(*args)

def one_arg(only_arg):
    print(f"Here is the only arg {only_arg}")

def two_arg(first, second):
    print(f"Here is the first {first} And here is the second {second}")

higher(one_arg, "Only one argument")
higher(two_arg, "Here's one arg", "and Another one")

另外,关于函数和python中面向对象编程的更多详细信息,您可以参考link
在线提供了许多其他资源供您学习

kokeuurv

kokeuurv2#

定义higher并调用fnc,如下所示:

def higher(fnc, *args):
    print(f"Calling function {fnc}")
    fnc(*args)

higher的主体中,args是在fnc之后传递的位置参数的元组。调用fnc(*args)会将该元组扩展为各个位置参数 * 到 * fnc

相关问题