所以我刚刚询问了函数列表,现在我想看看能不能,我猜一个字符串是非字符串的吗?我不知道如何说出来。我们的想法是将函数传递给包含应该执行的测试的字符串。所以代码就是这样的:
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 ""
时,有没有办法投出它或其他什么?
答案 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)