python多个条件组合_你能在Python中将多个条件函数动态地组合成一个吗?

我很好奇是否可以使用几个条件函数,然后创建一个检查所有条件函数的函数(例如,生成器遍历一个序列并创建迭代器的过程)。在

基本的使用情况是当您有大量的条件参数(例如“max_a”、“min_a”、“max_b”、“min_b”等),其中许多参数可能是空的。它们都将被传递给这个“函数创建”函数,然后返回一个检查它们的函数。下面是一个很天真的方法来完成我的要求:def combining_function(max_a, min_a, max_b, min_b, ...):

f_array = []

if max_a is not None:

f_array.append( lambda x: x.a < max_a )

if min_a is not None:

f_array.append( lambda x: x.a > min_a )

...

return lambda x: all( [ f(x) for f in f_array ] )

我想知道的是,实现上述目标最有效的方法是什么?似乎对f峎u数组中的每个函数执行函数调用会产生相当大的开销,但可能我正在进行过早/不必要的优化。不管怎样,我很想看看是否有人遇到过这样的使用案例,以及它们是如何进行的。在

另外,如果这在Python中是不可能的,那么在其他(也许是更具功能性的)语言中是可能的吗?在

EDIT:看起来一致的解决方案是组合一个包含全部条件集合的字符串,然后使用exec或eval生成一个函数。@doublep认为这是相当老套的。你觉得这有多糟糕吗?在编写函数时,仔细检查参数是否合理,这样的解决方案可以被认为是安全的?毕竟,无论需要什么严格的检查,只需要执行一次,而更快的组合条件的好处可以通过大量调用累积起来。人们是在部署场景中使用这样的东西,还是这主要是一种可以玩弄的技术?在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值