先看有有趣的问题
1 |
|
很明显是由于变量b未定义所以暴露出错误
修改一下
1 |
|
很合理,如果先给b赋值再调用,这样就不会出现问题。
再修改一点点 – 有趣的例子
实现一个简单版本能够完成上文客户端调用
1 |
|
- 首先输出了1 代表 print(a) 已经运行了。
- 但是print(b)却报错了。
- 我们看第二个例子,存在一个全局变量b 而且赋值是在输出之后进行的。
原因
Python编译函数的定义体时,它判断b是局部变量,因为在函数中给它赋值了。Python会尝试从本地环境获取b,但是尝试获取局部变量b的值时,发现b没有绑定值。
1 |
|
我们再试试,不对b操作的情况
1 |
|
如此对比是不是就清楚明白了
记得操作全局变量要使用global关键字 ```python b = 1 def f4(a): global b print (a) print (b) b = 8
f4(1) ```
“世界就像是个巨大的马戏团,它让你兴奋,却让我惶恐,因为我知道散场后永远是有限温存,无限心酸。”