Vincular un valor de objetos dentro de una función (cierre)

En SML (un lenguaje de programación funcional que aprendí antes de Python), puedo hacer lo siguiente:

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

En Python, sin embargo, la primera llamada dará 3 y la segunda dará 7.

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

¿Cómo puedo vincular el valor de una variable a una función en Python?

Respuestas a la pregunta(4)

Su respuesta a la pregunta