【问题标题】:Predicate function as argument谓词函数作为参数
【发布时间】:2014-05-20 13:34:12
【问题描述】:

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

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

但如果“函数”不是返回布尔值的函数,那么我的代码就不起作用

【问题讨论】:

    标签: python eclipse python-3.x predicate


    【解决方案1】:

    使用 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 2015-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      相关资源
      最近更新 更多