【Python】UnboundLocalError: local variable 'l' referenced before assignment

简介:

01  在程序中设置的sum_Logical属于全局变量,而在函数 calculate中没有sum_Logical的定义,根据python访问局部变量和全局变量的规则:当搜索一个变量的时候,python先从局部作用域开始搜索,如果在局部作用域没有找到那个变量,那样python就在全局变量中找这个变量,如果找不到抛出异常(NAMEERROR 或者 Unbound-LocalError,这取决于python 版本。)
02     如果内部函数有引用外部函数的同名变量或者全局变量,并且对这个变量有修改.那么python会认为它是一个局部变量,又因为函数中没有sum_Logical的定义和赋值,所以报错。
03  从下面两个程序看 单独的访问或者修改全局变量,并不报错~
04  #!/usr/bin/python
05  import sys
06  sum=5
07  def add(a=1,b=3):
08       print a,b
09       print sum --仅仅访问  
10  add(4,8)
11  print sum 
12  [root@rac3 python]# python local.py
13  4 8
14  5
15  
16  #!/usr/bin/python
17  import sys
18  sum=5
19  def add(a=1,b=3):
20       print a,b
21       sum=b+a  --在函数内部修改
22       print sum
23  add(4,8)
24  [root@rac3 python]# python local.py 
25  4 8
26  12
27  下面的程序就会因为“如果内部函数有引用外部函数的同名变量或者全局变量,并且对这个变量有修改.那么python会认为它是一个局部变量,又因为函数中没有sum_Logical的定义和赋值,所以报错”
28  #!/usr/bin/python
29  import sys
30  sum=5
31  def add(a=1,b=3):
32       print a,b
33       print sum 
34       sum=b+a
35       print sum
36  add(4,8)
37  print sum
38  [root@rac3 python]# python local.py 
39  4 8
40  Traceback (most recent call last):
41    File "local.py", line 10, in ?
42      add(4,8)
43    File "local.py", line 6, in add
44      print sum
45  UnboundLocalError: local variable 'sum' referenced before assignment
46  遇到在程序中访问全局变量并且要修改全局变量的值的情况可以使用:global 关键字,在函数中声明此变量是全局变量
47  #!/usr/bin/python
48  import sys
49  sum=5
50  print '改变之前:sum=',sum
51  def add(a=1,b=3):
52       global sum
53       print 'add 函数中:sum=',sum
54       sum=b+a
55       print '函数中改变之后:sum= ',sum
56  add(4,8)
57  print '改变之后 sum=',sum
58  [root@rac3 python]# vim local.py
59  改变之前:sum= 5
60  add 函数中:sum= 5
61  函数中改变之后:sum=  12
62  改变之后 sum= 12

相关文章
|
存储 索引 Python
深度解密函数的 local 名字空间(当 Python 中混进一只薛定谔的猫……)
深度解密函数的 local 名字空间(当 Python 中混进一只薛定谔的猫……)
202 0
|
JavaScript 前端开发 Python
成功解决:Can‘t find Python executable “python“, you can set the PYTHON env variable.
这篇文章分享了作者在运行前端Vue项目时遇到的关于Python执行环境的问题和解决方法。问题是由于找不到Python可执行文件导致的编译错误,解决方法包括安装编译环境、卸载并重新安装出现问题的`node-sass`包,并重新执行`npm install`和`npm run dev`。
成功解决:Can‘t find Python executable “python“, you can set the PYTHON env variable.
Python Tkinter之variable用法
Python Tkinter之variable用法
|
Python
python中可变参数(Variable Arguments)
【6月更文挑战第10天】
114 1
|
程序员 Python
【Python】已解决:SyntaxError: expression cannot contain assignment, perhaps you meant “==“?
【Python】已解决:SyntaxError: expression cannot contain assignment, perhaps you meant “==“?
438 0
|
Python
安装 supervisor报错执行python setup.py install时No local packages or working download links found for meld3
安装 supervisor报错执行python setup.py install时No local packages or working download links found for meld3
183 0
|
Python
gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
472 1
|
2月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
268 102
|
2月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
298 104
|
2月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
249 103

推荐镜像

更多