您当然可以将方法作为参数传递给 Python 中的函数。在下面的示例中,我创建了一个类 (MyClass),它有两个方法:isOdd 和 filterArray。我还在MyClass 之外创建了一个isEven 函数。 filterArray
接受两个参数 - 一个数组和一个返回 True 或 False 的函数 - 并使用作为参数传递的方法来过滤数组。
此外,您可以将 lambda 函数作为参数传递,这就像动态创建函数一样,无需编写函数声明。
def isEven(num):
return num % 2 == 0
class MyClass:
def isOdd(self, num):
return not isEven(num)
def filterArray(self, arr, method):
return [item for item in arr if method(item)]
myArr = list(range(10)) # [0, 1, 2, ... 9]
myClass = MyClass()
print(myClass.filterArray(myArr, isEven))
print(myClass.filterArray(myArr, myClass.isOdd))
print(myClass.filterArray(myArr, lambda x: x % 3 == 0))
输出:
[0, 2, 4, 6, 8]
[1, 3, 5, 7, 9]
[0, 3, 6, 9]