函数内部的函数-全局和非局部范围

Tharanga Abeyseela

我正在尝试在全局和非本地范围内使用以下代码。以下代码段可以解决所有问题。

def countdown(start):
  n = start
  def display():
    print('--> %d' % n)
  def decrement():
    nonlocal n ##using python3
    n -= 1
  while n > 0:
    display()
    decrement()
countdown(10)

倒数计时(10)

但是我为什么不能使用全局n?而不是非本地的 那给了我

 UnboundLocalError: local variable 'n' referenced before assignment

这是片段

 def countdown(start):
   global n   ##defined it global
   n = start
   def display():
     print('--> %d' % n)
   def decrement():
     ##no nonlocal varibale here
     n -= 1
   while n > 0:
     display()
     decrement()

倒数计时(10)

user2357112支持Monica

全局声明不会自动应用于嵌套函数。您需要另一个声明:

def decrement():
    global n
    n -= 1

所以nindecrement也指全局变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章