很难描述我需要的行为,所以我举一个例子。运行以下代码时,f()
会打印"eggs"
,但我希望有一种方法可以f()
打印"spam"
,这是x
的值{} f
声明的时间。
x = "spam"
def f():
print(x)
x = "eggs"
f()
这似乎不是非常pythonic,但我已经考虑了我面临的问题,并得出结论,这个解决方案是最优雅的。如果有必要,我可以提供有关需要此解决方案的确切示例的更多详细信息。
答案 0 :(得分:3)
一旦定义了x
,就将f
绑定到f
:
x = "spam"
def f(x=x):
print(x)
x = "eggs"
f()
# spam
可能不是一个好主意。
答案 1 :(得分:0)
Moses Koledoye的答案已经足够,但通过实验我发现以下内容也适用于Python 3:
from functools import partial
x = "spam"
f = partial(print, x)
x = "eggs"
f()
我只是记下了这一点,因为它总是有助于选择
答案 2 :(得分:0)
您也可以在将x设置为垃圾邮件之前简单地调用该函数,如下所示:
x = 'spam'
def f():
print(x)
f()
x = "eggs"
由于您在设置x等于“eggs”之前调用该函数,因此该输出将是“垃圾邮件”。希望这有帮助