【问题标题】: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")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-22
        • 1970-01-01
        • 2020-03-11
        • 1970-01-01
        • 2018-06-27
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        相关资源
        最近更新 更多