前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python的 global 到底干嘛的?

Python的 global 到底干嘛的?

作者头像
double
发布2019-12-30 14:48:44
9980
发布2019-12-30 14:48:44
举报
文章被收录于专栏:算法channel

先回答为什么要有global.

一个变量被多个函数引用,想让全局变量被所有函数共享和修改。有的伙伴可能会想,这还不简单:

代码语言:javascript
复制
i = 5
def f():
    print(i)

def g():
    print(i)
    pass

f()
g()

f和g两个函数都能共享变量i,程序也没有报错。所以他们依然不明白为什么要用global.

但是,如果想要对i递增,这样:

代码语言:javascript
复制
def h():
    i += 1

h()

此时执行程序,bang, 出错了!抛出异常:UnboundLocalError.

原来编译器在解释i+=1时会把i解析为函数h()内的局部变量,很显然在此函数内,编译器找不到对变量i的定义,所以会报错。

global就是为解决此问题而被提出的。

在函数h内,显示地告诉编译器i为全局变量,然后编译器会在函数外面寻找i的定义,执行完i+=1后,i还为全局变量,值加1:

代码语言:javascript
复制
i = 0
def h():
    global i
    i += 1

h()
print(i)

近期小例子:写一个装饰器:统计异常发生次数和时间;对象可被调用的实现方法;求任意维度两点间距离; 两种合并字典的方法对比; 计算和聚合同时进行; groupby 分组; plotly画柱状图+折线图;

82页《Python之路1.1.pdf》下载方式,关注《Python小例子》并在其后台回复 mypy,即可下载。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先回答为什么要有global.
  • 此时执行程序,bang, 出错了!抛出异常:UnboundLocalError.
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档