博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【大坑记】Python中的全局变量变成了局部变量
阅读量:7038 次
发布时间:2019-06-28

本文共 705 字,大约阅读时间需要 2 分钟。

上线前忙忙乎乎写代码,更新了一个同事的代码,发现日志模块报错了

伪代码如下:

from flask import current_appdef add_log(data, app=None):    if app:        current_app = app    current_app.game_logger.info(data)add_log(data)

错误代码:

UnboundLocalError: local variable 'current_app' referenced before assignment

因为确认在flask的app上下文中,而且没有传app参数进去,所以光看代码逻辑,一直很奇怪为啥会报current_app不存在的错误。

后来好奇自己写了个小程序测验

g = 10def test(a=None):    if a:        g = a    print gtest()

同样报了UnboundLocalError错误

local variable 'g' referenced before assignment

于是猜出了,在定义这个函数的时候,我们在函数内存在给全局变量 g 赋值的操作,它就默认把函数内的 g 变成了本地变量。(即便这条赋值语句并没有被执行)

所以解决方法是,就是很简单的加个 global 申明全局变量

修改后的代码

g = 10def test(a=None):    global g    if a:        g = a    print gtest()

输出正常了- -

诶,说到底就是基础不够扎实啊╮(╯_╰)╭

转载地址:http://cuial.baihongyu.com/

你可能感兴趣的文章
flex游戏编程性能优化
查看>>
美国诚实签经验——是不是户籍和常住作业地在一起?是不是有居住证?明白居住证信息吗?英语超卓,应变能力强,有幽默感 10分...
查看>>
VC++速记
查看>>
D3D中设备丢失的处理
查看>>
由鸣人的螺旋丸想到的
查看>>
Python牛刀小试(四)--代码解析(邮件发送功能)
查看>>
Sharing A Powerful Tool For Calculate Code Lines
查看>>
【循序渐进学Python】8.面向对象的核心——类型(下)
查看>>
一致性Hash
查看>>
过 DNF TP 驱动保护(一)
查看>>
错误 1 在应用程序级别之外使用注册为 allowDefinition='
查看>>
获取系统开机的时间(Windows、Linux)
查看>>
牛人博客网址
查看>>
(转载)Java日期格式化及其使用例子收集
查看>>
LeetCode:Pow(x, n)
查看>>
你所不知道的JavaScript数组
查看>>
[Android Pro] root用户删除文件提示:Operation not permitted
查看>>
strncpy 引起的思考,重新认识了strncpy这个函数【转】
查看>>
A Simple GPS Application Based on Microsoft.WindowsMobile.Samples.Location
查看>>
最简单的基于FFmpeg的AVDevice例子(读取摄像头)【转】
查看>>