keyword --- global & nonlocal

1. global  #消除python对global variable的屏蔽(shadowing)作用

1.1 如果只是 Access 变量,不必加global

1.2如果在 函数中需要修改global变量,则需加global

>>> t = 5

>>> hex(id(t))

'0x64320250'

>>> def withoutGlobal():

t = 10

print("without global id of t is:",hex(id(t)))

>>> withoutGlobal()

without global id of t is: 0x643202f0

>>> def withGlobal():

global t

t = 10

print("with global id of t is:",hex(id(t)))

>>> hex(id(t))

'0x64320250'

>>> withGlobal()

with global id of t is: 0x643202f0

>>> # after call withGlobal()

>>> hex(id(t))

'0x643202f0'

>>> t

10


2.nonlocal 用在内部函数中

2.1 错误例子

>>> def fun1():

               x = 5 #相当于fun2()的全局变量

                         def fun2():

                          x *= x

               return fun2()

>>> fun1()

UnboundLocalError: local variable 'x' referenced before assignment

2.2 正确例子

>>> def fun1():

                 x = 5

                def fun2():

                          nonlocal x

                          x *= x

                         return x

                  return fun2()

>>> fun1()

25



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如果一个人被自己的过去流放,这是一种怎样的感觉?有人说:会死在过去!而我看到的却是深藏于心的孤独。一个人,被过去流...
    晨曦奋进阅读 143评论 0 1
  • 昨晚,做了一个很奇怪的梦,我想现实生活中的植物人大抵也是同梦所揭示的一样:为爱流连;如果现实生活中没有他所爱的东西...
    pan02阅读 169评论 0 0
  • 含羞草,独自芬芳独自恼 (作者:心遥) 五月份的某一天,我们从市场买回一盆青翠欲滴的含羞草。 孩子显得特别兴奋,也...
    心遥阅读 1,000评论 3 5