python语言里函数作用域unBoundError错误问题请教,pythonunbounderror,发现了这个问题,百思不得
python语言里函数作用域unBoundError错误问题请教,pythonunbounderror,发现了这个问题,百思不得
发现了这个问题,百思不得其解;
bb=100def func(): print bb #right------------------------------def func(): bb=bb+1 #error
如上所示,调用函数func使用bb=bb+1会出错,unBoundError错误,为啥只打印bb时没错,执行了个自加一操作会出现?
的确是python一个很不舒服的特性。。
因为在前一种形式下,由于没有赋值,解释器不知道这个变量在哪里定义,所以从函数内部作用域寻找这个变量,没找到,继续找全局作用域,找到了bb = 100,所以没问题,变量是有定义的,如果这时还没找到会继续查找builtin作用域。
而后一种因为产生了赋值,解释器认为这个变量是属于内部作用域的,而在赋值表达式的右边则需要查找这个变量的值,因为在函数内部作用域里找不到这个变量的定义,所以出错,你可以用以下形式得到相同作用
def func(): global bb bb=bb+1
编橙之家文章,
相关内容
- Python多线程读取文件进程读取到内容不全如何破,pyt
- Python有支持url发送指令控制服务器的方法吗,pythonurl
- 想使用redis和gevent完成实时消息系统求思路,redisgeven
- 要用python获取MySQL连接器如何写,pythonmysql,从MySQL官网上
- cookbook书中关于装饰器的源码里,这个参数是怎么传递的
- Python解决算法复杂度问题求助,python问题求助,问题是
- Python tornado分页合并展示问题,pythontornado,需要在用户输
- Python3二进制转化成字符串有什么好的解决办法吗,py
- python报错信息type 'exceptions.AttributeError'是什么意思,,
- Python可以做局域网线聊天类型的网站吗?,python局域网
评论关闭