【问题标题】:Why does this Python function not require an argument when it itself is being used as an argument?为什么这个 Python 函数本身被用作参数时不需要参数?
【发布时间】:2023-01-25 19:35:59
【问题描述】:

我正在查看一个充当类工厂并将函数作为参数的函数:

def Example(func):

    class Example(object):
        def __init__(self, name):
            self._name = name
    
    return Selection

还有另一个单独的功能:

def other_function(flags):
    flagvals = np.unique(flags)
    return {val: flags == val for val in flagvals}

然后我看到第一个函数作为参数与第二个函数一起使用:

my_example = Example(other_function)

任何人都可以解释为什么 other_function 在定义时似乎需要参数时似乎不需要参数本身吗?

【问题讨论】:

  • my_example = Example(other_function) 您正在传递函数本身,而不是调用它。为什么要传递任何参数?
  • 因为你没有在这里调用它。当你执行 func(flags) 时,你将需要一个参数。
  • 除了 Fractalism 的上述解释外,我们无法提供更多见解,因为您发布了一些随机的不清楚代码。 Example 函数从不使用参数 func 并且也不清楚 Selection 是什么......

标签: python function class


【解决方案1】:

仔细考虑类型。 other_function 的类型为function,而other_function(flags) 执行函数,传递参数,返回类型dict。因此,当您将 other_function 传递给 example 时,您传递的是函数本身,而不是函数执行时的返回值。因为你传递的是函数,而不是执行函数,所以不需要传递参数

【讨论】:

    【解决方案2】:

    您只需将函数other_function 作为函数参数传递给函数Example

    如果你想调用other_function,你可以在Example函数中这样调用它:

    def Example(func):
        my_flags = ...
        func(my_flags)
        
        ...
    

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 2019-03-11
      • 2011-02-25
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      相关资源
      最近更新 更多