我有一个函数将接受另一个函数,如果我作为参数传递的函数是真的那么它会做一些事情,如果它是假的那么它会做其他的事情,但是如何指定它以便函数是作为参数传递的是一个返回bool的函数?
def a_function(function,value):
if function(value) == True:
do this
else:
do this
但是如果“function”不是返回bool的函数,那么我的代码不起作用
答案 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