谓词函数作为参数

时间:2014-04-08 03:48:22

标签: python eclipse python-3.x predicate

我有一个函数将接受另一个函数,如果我作为参数传递的函数是真的那么它会做一些事情,如果它是假的那么它会做其他的事情,但是如何指定它以便函数是作为参数传递的是一个返回bool的函数?

def a_function(function,value):
    if function(value) == True:
       do this
    else:
       do this

但是如果“function”不是返回bool的函数,那么我的代码不起作用

1 个答案:

答案 0 :(得分:2)

使用isinstance的简单解决方案可行。在这里运行代码

http://codebunk.com/b/-JJzQlUmKV10CO5Lps_k

def fn(function,value):
    retval = function(value)
    if not isinstance(retval,bool):
       print("function did not return a bool")
       return None
    if retval:
        print "True"
    else:
        print "False"

fn(sum, [1,2,3])
fn(lambda x:True, [1,2,3])

不久前,我写了一篇文章,讨论Guido的多方法,并用它们对函数参数进行模式匹配。您可以在此处阅读帖子http://speak.codebunk.com/post/77084204957/pattern-matching-in-python