假设我需要创建 10 个名为 add1、add2、…、add10 的函数。对于每个 i , addi 接受一个整数 x 并输出 x+i 。
当我尝试以下操作并评估 add2(10) 时,Python 给了我一个 NameError。
for i in range(10):
def addi(x):
return x + (i+1)
我知道上面的代码是错误的,因为我定义的 addi 函数是不可变的;我很确定我所做的就是重新定义 addi 10 次。如何快速定义这 10 个功能?
原文由 jessica 发布,翻译遵循 CC BY-SA 4.0 许可协议
在这种情况下使用
functools.partial
结合字典。我假设你 真正 想做的更复杂,因为这个特定任务不需要多个函数。
解释
functools.partial
是一个高阶函数,它返回一个固定选定参数的输入函数。污染命名空间
从评论中,一个常见的问题是:
我的简短回答:
@BoarGules 的扩展答案: