想象一下,如果你想做一个闭包函数,决定它的内部函数做什么。在这个例子中,我们有一个内部函数,它决定一个数是否为偶数,但是生成器决定这个数0是否为偶数,就像有一场辩论一样。你知道吗
def generate_is_even(reject_zero):
def is_even(x):
return (x % 2 == 0 and x != 0) if reject_zero else x % 2 == 0
return is_even
如果is\u even(x)已运行数百万次,则每次运行is\u even(x)时仍会检查reject\u zero!我的实际代码有许多类似的“选项”来创建一个运行数百万次的函数,为每个选项组合编写函数会很不方便。有没有一种方法可以防止这种低效,或者Python的一些实现可以简化这种情况?你知道吗
考虑将所有选项缓存在一个列表中,生成的函数只迭代所选的函数
那你可以用
如果您需要添加选项,那么将其添加到选项
dict
,您可以使用enew_option=True
is generate\u is \u even函数来启用它您似乎在寻找类似C中宏的东西。不幸的是,Python没有被编译(对于纯粹主义者来说,与C的编译方式不同),而且我没有看到满足您需要的直接解决方案。你知道吗
不过,您可以在运行时开始时设置所有参数,并在此时根据参数的值选择函数。例如,函数生成器类似于:
这种方法的缺点是必须为处理此类参数的每个函数编写一个生成器。在您现在的例子中,这不是一个大问题,因为只有两个版本的函数,它们不是很长。你知道吗
你需要问问自己什么时候这样做有用。在您的情况下,只有一个布尔比较,这并不是真正的资源消耗,但是在某些情况下,以前生成函数可能是值得的。你知道吗
相关问题 更多 >
编程相关推荐