Flask全局对象g使用的简单例子

其实全局变量g是一个比较简单的东西,个人智商可能比较低,看了半天还是在下班的路上才看懂这个到底是啥意思,可能下班清醒开窍了吧,百度翻了几页总结的一句话,g是在一次请求中使用,下面是我的理解

我们在flask一个请求内,也许是是一个具体视图函数内的请求,g变量是有效的,那么你设置一般变量也是可以的啊,为啥要专门设置一个全局变量呢,其实我们在这个视图函数内使用其他函数的时候,其他函数如果是有参数的话,需要我们传递进去的,但是使用了全局变量g的话,相当于

global var

在这次请求了注册了一个全局变量,那么他的作用域,使用期限都仅限于此次的请求,在这个请求内所有调用的函数都可以使用此全局变量,请求结束,g变量即销毁,最后我理解是为啥要这么搞?  一个图方便,二个确实省内存,发现搞了python以后啥都要考虑省内存,还有yield也是,我还是比较接地气的,下面上一个我的例子,不是百度copy的。

#!/usr/bin/python3
#coding:utf-8
from flask import Flask,g
app = Flask(__name__)
app.config['SECRET_KEY'] = 'merci'
ctx = app.app_context()
ctx.push()

def test():
    name = 'sulao'
    g.user = name
    test_g()
    test2_g()
        print(name, g.user)

def test_g():
    print("Global var g is %s" % g.user)

def test2_g():
    print("Test var g is %s again" % g.user)

if __name__ == "__main__":
    test()

上面例子打印结果是

微信截图_20190102231605.jpg

注意了,全局变量g也是一种上下文请求,所以我们需要激活上下文,app_context()激活以后,我们需要推入栈中使用push()方法。flask内大部分的上下文都需要先激活才可以进行使用,具体哪些还得后期整理。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://sulao.cn/post/622.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。