【问题标题】:Add a function as a parameter in Python [duplicate]在 Python 中添加一个函数作为参数
【发布时间】:2022-01-22 18:18:53
【问题描述】:

想象一下,我想创建一个名为“execute()”的函数。该函数将另一个函数的名称及其输入作为参数,并输出它返回的任何内容。

这是一个例子:

execute(print, "Hello, World!") # "Hello, World!"
execute(str, 68) # "68"

当然,这个函数没有任何用处,但我想掌握将另一个函数作为参数放入的主要思想。 我怎么能这样做?

【问题讨论】:

标签: python python-3.x function


【解决方案1】:

函数可以很容易地传递给函数。要传递可变长度参数列表,请在函数定义中使用*args 捕获它,并在调用 func 时使用相同的语法将参数再次扩展为多个参数。

def execute(fn, *args):
  return fn(*args)

注意:我们不是将函数的名称传递给execute(),而是传递函数本身。

【讨论】:

  • 谢谢! Stackoverflow 说我可以在 10 分钟内接受你的回答。
【解决方案2】:

你可以这样做,

def execute (func, argv):
    return func(argv)
execute(print, 'test')

返回test

execute(str, 65)

返回'65'

【讨论】:

    【解决方案3】:

    我相信这应该可行:

    def execute(fn, *args, **kwargs):
        return fn(*args, **kwargs)
    

    这里:

    • args = 参数(列表)
    • kwargs = 关键字参数(字典)

    如果你想做更多,那么你可以寻找Decorators in Python

    【讨论】:

      【解决方案4】:

      是的,您可以将函数作为参数传递给另一个函数。 可以接受其他函数作为参数的函数也称为高阶函数。 我希望以下示例对您有所帮助:

      def shout(text): 
          return text.upper() 
      
      def greet(func):
         greeting = func("Hi, I am created by a function passed as an argument.") 
         print(greeting)
      
      greet(shout) 
      

      代码的输出将是:

      嗨,我是由作为参数传递的函数创建的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-06
        • 1970-01-01
        • 2020-01-04
        • 2014-04-01
        • 2023-04-06
        • 2013-11-19
        • 2022-06-30
        • 2011-09-11
        相关资源
        最近更新 更多