7 python
为什么我在下面的第三个代码中出错,但在前两个中却没有?我使用的是Python 3.6.0,Anaconda 4.3.1(64位)Jupyter.
代码1:
c = 100
def fib():
c = 20
a = c
print ("a in fib", a)
print ("c in fib", c)
fib()
print ("c", c)
Run Code Online (Sandbox Code Playgroud)
代码1的输出:
a in fib 20
c in fib 20
c 100
Run Code Online (Sandbox Code Playgroud)
代码2:
c = 100
def fib():
a = c
print ("a in fib", a)
print ("c in fib", c)
fib()
print ("c", c)
Run Code Online (Sandbox Code Playgroud)
代码2的输出:
a in fib 100
c in fib 100
c 100
Run Code Online (Sandbox Code Playgroud)
代码3:
c = 100
def fib():
a = c
print ("a in fib", a)
print ("c in fib", c)
c = 20
fib()
print ("c", c)
Run Code Online (Sandbox Code Playgroud)
代码3的输出:
UnboundLocalError Traceback (most recent call last)
<ipython-input-42-d6affa26dc65> in <module>()
7
8
----> 9 fib()
10 print ("c", c)
<ipython-input-42-d6affa26dc65> in fib()
1 c = 100
2 def fib():
----> 3 a = c
4 print ("a in fib", a)
5 print ("c in fib", c)
UnboundLocalError: local variable 'c' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
小智 1
我不能肯定地说,但我认为最可能的解释是前两个看到变量“c”的全局版本。
第三个必须看到您在“fib”函数的底部定义了一个局部变量“c”,因此不使用全局“c”变量。确实,这是一个很好的例子,说明了为什么不应该以这种方式使用全局变量。
| 归档时间: |
|
| 查看次数: |
211 次 |
| 最近记录: |