T**S 发帖数: 319 | 1 程序如下:
a = 1
def f():
a = 3
def g():
global a
a += 1
return g
1)为什么这样会得到1:f(); print a;
而这样会得到2: x=f(); x(); print a;
为什么要用个中间变量?
2) 在g()中用了global所以变量a指的是最外面的,能不能指定上一层,即f()中的变量?
thanks. | b******n 发帖数: 592 | 2 First case, a is never touched
Second case,
x=f() assign g() to x
x() executes g()
then a = 2
【在 T**S 的大作中提到】 : 程序如下: : a = 1 : def f(): : a = 3 : def g(): : global a : a += 1 : return g : 1)为什么这样会得到1:f(); print a; : 而这样会得到2: x=f(); x(); print a;
| w****i 发帖数: 964 | 3 in f() a refers to local variable
in g() a refers to global variable by the "global" key word |
|