函数作为python中的构造函数参数

0 python constructor

函数可以用作python__init__方法的参数吗?

我想做的是为感知器和逻辑回归学习算法编写一个类。由于它们的训练函数非常相似,并且仅在用于预测的函数上有所不同,因此能够在构造时指定此函数函数会很好。

我希望这个问题以前没有被问过(我已经搜索过,没有找到任何东西;也许我正在寻找错误的主题)。一个例子会很棒。我对 不太熟悉lambda,所以请为任何高级 python 功能提供一些理由。谢谢!

Mat*_*hew 5

是的。函数是 Python 中的一等对象,因此您可以将它们作为参数传递给任何您喜欢的函数,包括__init__.

def a():
    print("Hello!")

def b(fun):
    print("running fun")
    fun()
    print("all done")

b(a) # prints "running fun", then "Hello!", then "all done".
Run Code Online (Sandbox Code Playgroud)

您可以像任何其他变量一样将它们存储在类中:

class c(object):
    def __init__(self, fun):
        self.fun = fun
        self.fun()
Run Code Online (Sandbox Code Playgroud)

lambda只是编写函数的另一种方式,而不必将其存储在变量中。它可用于动态定义函数,例如:

def d(fun, num):
    return fun(num)

def e(x):
    return x**2

d(lambda x: x**2, 7) # Returns 49
d(e) # Also returns 49
Run Code Online (Sandbox Code Playgroud)