将变量测试添加到函数中

时间:2013-03-04 20:57:02

标签: python functional-programming

所以我刚刚询问了函数列表,现在我想看看能不能,我猜一个字符串是非字符串的吗?我不知道如何说出来。我们的想法是将函数传递给包含应该执行的测试的字符串。所以代码就是这样的:

def newFunct(result, test):
    return (lambda x: result if(test) else "")

当我尝试将它作为字符串时,它总是返回true。

当我致电newFunct("Even", "x%2==0")而不是lambda x: "Even" if(x%2==0) else ""而不是lambda x: "Even" if("x%2==0") else ""时,有没有办法投出它或其他什么?

1 个答案:

答案 0 :(得分:2)

可以使用函数eval

来完成
def newFunct(str, test):
    return (lambda x: str if eval(test, {"x": x}) else "")
is_even = newFunct("even", "x % 2 == 0")
is_even(4)
# "even"
is_even(10)
# "even"
is_even(13)
# ""

请注意,如果您使用的是由用户输入的字符串,则使用eval可能会有危险,尤其是。更好的方法是将函数作为test参数:

def newFunct(str, test):
    return (lambda x: str if test(x) else "")
is_even = newFunct("even", lambda x: x % 2 == 0)