python - 在函数中绑定(bind)对象值(闭包)

标签 python closures sml

<分区>

在 SML(我在 Python 之前学习的一种函数式编程语言)中,我可以执行以下操作:

val x = 3;
fun f() = x;
f();
>>> 3
val x = 7;
f();
>>> 3

然而,在 Python 中,第一次调用将给出 3,第二次调用将给出 7。

x = 3
def f(): return x
f()
>>> 3
x = 7
f()
>>> 7

如何在 Python 中将变量的值绑定(bind)到函数?

最佳答案

您可以使用关键字参数:

x = 3
def f( x=x ): 
    return x

x = 7
f()  # 3

关键字参数在创建函数时分配函数运行时会在函数范围内查找其他变量。 (如果在函数范围内找不到它们,python 会在包含函数的范围内查找变量,等等)。

关于python - 在函数中绑定(bind)对象值(闭包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11953330/

相关文章:

javascript - 理解 Jon Resig 的偏应用实现

debugging - 在仿函数应用后查看 Polyml 中泛型的特化/子类型

functional-programming - 实现懒惰和内存

python 闭包 + oop

python - 如何在Python中打印集合的最小值?

python - 暂时进入IPython中的调试器

Python字节串子串切片返回不同的表示

Javascript 只运行一半的循环

loops - SML - 列表替换函数的迭代翻译

python - 计算两个字符串之间的差异