1

所以我只是询问了函数列表,现在我想看看我是否可以,我猜是让一个字符串成为非字符串?我完全不知道该怎么说。这个想法是向函数传递一个包含它应该执行的测试的字符串。所以代码会是这样的:

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 ""

4

1 回答 1

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)
于 2013-03-04T21:00:11.700 回答