Vinculando um valor de objetos dentro de uma função (encerramento)

Em SML (uma linguagem de programação funcional que aprendi antes do Python), posso fazer o seguinte:

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

Em Python, no entanto, a primeira chamada dará 3 e a segunda dará 7.

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

Como vinculo o valor de uma variável a uma função no Python?

questionAnswers(4)

yourAnswerToTheQuestion