首页 > 其他 > 详细

函数作用域global和nonlocal

时间:2019-12-23 16:52:58      阅读:82      评论:0      收藏:0      [点我收藏+]

函数作用域 自己有用自己的 自己没有用上一层 一层一层往上找:

num = 0

def one():

  print(num) #自己没有且没有上一层了用全局 0

  num = 1

  def two():

    num =2

    def three():

      print(num)#自己没有往上找 2

    three()

    print(num)#自己有用自己的 2

  two()

  print(num)#1自己有用自己的

one()

print(num) #用自己的

 

 

global:定义一个全局变量

global定义一个全局变量 自己有用自己的 自己没有用上一层的 global num 代替函数外的num 成为全局变量 

num = 0

def one():

  print(num) #自己没有且没有上一层了用全局 0 这时还没有 global这回事

  def two():

    global num =2

    def three():

      print(num)#自己没有往上找 2

    three()

    print(num)#自己有用自己的 2

  two()

  print(num)#2 现在自己没有也没有上一层了 就用全局变量 有global global num成为此函数中的全局变量了

one()

print(num) #2 此时global num num=2 取代 num = 0 成为全局变量

 

nonlocal:只能影响到上一层 

num =0
def one():

print(num)#这个时候没有nonlocal 0

def two():
num = 2
print(num)# 这个时候没有 nonlocal 2
def three():
nonlocal num
num = 3
print(num)#用自己的 3
three()
print(num)#有了global 3
two()
print(num)#nonlocal 只能影响他的上一层 这个是他的上二层了 自己没有用上一层 上一层没有找全局 0
one()
print(num) 0

 

函数作用域global和nonlocal

原文:https://www.cnblogs.com/MaDon/p/12084057.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!