向函数添加变量测试

2024-04-26 13:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我刚才问了函数列表,现在我想看看我能不能,我猜把一个字符串变成一个非字符串?我不知道该怎么说。其思想是向函数传递一个包含它应该执行的测试的字符串。所以代码应该是这样的:

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 ""?你知道吗


Tags: lambda函数字符串代码testtrue列表return
1条回答
网友
1楼 · 发布于 2024-04-26 13:35:26

这可以通过函数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)

相关问题 更多 >