本人目前刚学习python
, 遇到了关于变量作用域的一些问题, 如下:
下面这个就不是非常明白
a = 3def f(): a += 4 print(a) f() # UnboundLocalError: local variable 'a' referenced before assignment
然后如果稍微改一下:
a = 3def f(): b = a + 4 print(a) f() # 3
这里新声明了一个变量b
, 对a
进行了引用, 然后就可以访问到a
了, 不是明白为什么
另外如果将代码 1 换成js
, 结果又不同
var a = 3const f = () => { a += 4 console.log(a) }a() // 7f() // 7
在js
中不仅仅能够访问到全局变量, 甚至可以对全局变量进行修改, 所以在js
里面作用域机制和python
又有什么区别?
另外, 本人所了解到js
与python
都是静态作用域, 原理应该相同, 但是上面显示的结果却很不一样, 麻烦能有前辈清楚的解答一下, 本人才学疏浅, 见谅!
一只斗牛犬
烙印99
相关分类