【发布时间】:2021-04-16 06:49:15
【问题描述】:
我有一些使用外部变量的函数。一个(基本上)简化的例子:
a = 2
b = 3
def f(x):
return x * a + b
虽然我在f 中需要a 和b,但我在其他任何地方都不需要它们。特别是,可以写a = 5,这将改变f 的行为。我应该如何使a 和b 对外部不可见?
其他语言让我大致可以写出如下代码:
let f =
a = 2
b = 3
lambda x: x * a + b
我想要什么:
-
f必须按预期工作并具有相同的签名 -
a和b只能计算一次 -
a和b不得存在于f之外的范围内 - 分配
a = ...和b = ...不影响f - 执行此操作的最简洁方法。例如。以下解决方案正式有效,但它引入了
g,然后将其删除,这是我不喜欢的(例如,存在覆盖现有g的风险,我认为它很丑):
def g():
a = 2
b = 3
return lambda x: x * a + b
f = g()
del g
【问题讨论】: