python局部赋值的规则
2013-03-07 00:00
393 查看
myVar = 1 def myfunc(): myVar += 1 myfunc()
会提示错误:
UnboundlocalError: local variable 'myVar' referenced before assignment
Python提出如下假设:如果在函数体内的任何地方对变量赋值,则Python将名称添加到局部命名空间中。
语句myVar += 1对名称myVar赋值,则myVar是函数myfunc的局部命名空间的一部分,而它当前没有关联值,所以会产生错误。
解决方法:使用global语句
myVar = 1 def myfunc(): global myVar myVar += 1 myfunc()
附作用域搜索规则:
L:本地的(Local)
E:封闭的(Eclosing)
G:全局的(Global)
B:内置的(Built-in)
相关文章推荐
- python局部赋值规则
- python局部赋值的规则
- Python的变量赋值及函数参数传递规则
- python之局部变量引用赋值前的结果
- Python引用传递、赋值规则以及深拷贝和浅拷贝
- Python命名空间——locals()函数和globals()函数及局部赋值规则
- 零基础学python-10.2 多目标赋值与变量命名规则
- 零基础学python-10.2 多目标赋值与变量命名规则
- Python 变量赋值和命名规则
- 2015/8/26 Python基础(1):基本规则及赋值
- Python 赋值、浅拷贝、深拷贝的区别?
- python数组的赋值和拷贝
- Python 核心编程笔记_Chapter_3 Note_1_语句和语法_赋值与变量_标识符
- Python3基础 ,= 一个等式给多个变量赋值
- 【Python】Python中变量的定义、以及变量的命名规则
- python变量赋值(可变与不可变)
- python 拷贝 深拷贝 浅拷贝 赋值
- Python——基本的序列和映射规则
- Python中赋值、浅拷贝与深拷贝
- (继承及其访问限定符)&&(派生类及其默认成员函数)&&(赋值兼容规则)