在Python中,我可以将一个函数作为参数传递给另一个函数,即:
inspect.getmembers(random, callable)
这将使我得到random
变量的所有可调用成员。 callable
是传递给执行检查的函数(仅返回满足检查条件的变量成员)。
我的特定问题是如何获取所有不可调用的参数,更广泛地说,是否有一种方法可以将函数的“反向”作为参数传递?
我已经尝试过了:
inspect.getmembers(random, !callable)
inspect.getmembers(random, not callable)
第一个是语法错误,而第二个则无效。
作为一种解决方法,我定义了自己的函数:
def uncallable(object)
return not callable(object)
因此可行:
inspect.getmembers(random, uncallable)
但是我想知道是否有更简单的解决方案。
答案 0 :(得分:1)
只需使用lambda:
inspect.getmembers(random, lambda x: not callable(x))
答案 1 :(得分:0)
只需编写您无法调用的包装器即可。
我所知没有一种语言允许您期望的那种高级函数运算。
没有办法使这种概念大体上起作用。
这些函数的结果是什么?
! len
len + len
len + ! len
所以剩下的就是明确编写的高阶函数,以函数为参数并返回诸如此类的其他函数的akka函数
def negate(func):
def wrapped(*args, **kwargs):
return not func(*args, **kwargs)
return wrapped
uncallable = negate(callable)
这些与python装饰器的模式相同。