【问题标题】:Python Higher order-function with varying arguments具有不同参数的 Python 高阶函数
【发布时间】:2022-11-18 08:01:27
【问题描述】:
我正在尝试编写一个接受不同数量参数的高阶函数。
例如这样的事情
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但我认为我对它的理解还不够好,也没有找到一种在不改变这两个功能的情况下使用它的方法
【问题讨论】:
标签:
python
python-3.x
higher-order-functions
【解决方案1】:
定义higher 并像这样调用fnc:
def higher(fnc, *args):
print(f"Calling function {fnc}")
fnc(*args)
在higher 的主体中,args 是在fnc 之后传递的位置参数的元组。调用 fnc(*args) 将该元组传播到 fnc 的各个位置参数中。
【解决方案2】:
您可以只使用 * 来定义多个参数。
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")