Python:函数内的全局变量+;诅咒

Python:函数内的全局变量+;诅咒,python,curses,Python,Curses,我非常非常困惑 基本上是试图声明一个指向curses窗口的全局变量,这样我就可以使用调试命令,但是它会抱怨AttributeError:“NoneType”对象没有属性“addstr”,这意味着它没有被设置?请帮忙 wDebug = None def start(stdscr): curses.nocbreak() curses.echo() screenSize = stdscr.getmaxyx() wDebug = curses.newwin(5, sc

我非常非常困惑

基本上是试图声明一个指向curses窗口的全局变量,这样我就可以使用调试命令,但是它会抱怨
AttributeError:“NoneType”对象没有属性“addstr”
,这意味着它没有被设置?请帮忙

wDebug = None

def start(stdscr):
    curses.nocbreak()
    curses.echo()
    screenSize = stdscr.getmaxyx()

    wDebug = curses.newwin(5, screenSize[1], 0, 0);

    curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE)

    wDebug.bkgd(curses.color_pair(1))
    wDebug.refresh()

    /* Snip */

    awaitInput(wInput)

    while 1: pass

def awaitInput(window): 
  while 1:
    msg = /* Snip */
    sendMessage(msg)

def sendMessage(msg):
  /* Snip */
  debug("Send message")

def debug(msg):
  wDebug.addstr(msg + "\n")
  wDebug.refresh()  
非常感谢您抽出时间,

您需要使用:

从文件中:

如果没有
global

您需要使用:

从文件中:

如果没有
global


哦,不知道你必须用Python来做这个,noob错误,谢谢!那么,您怎么可以从debug访问全局变量呢?@Pez:在Python中,默认情况下,变量被假定为本地变量。当您访问未在函数中赋值的变量时,Python将检查全局变量。然而,如果您分配给任何变量,Python会认为它必须是一个局部变量,除非您明确地说不是(即使有一个全局变量)。像
def foo():x+=10
这样的函数将引发未绑定的LocalError,即使存在名为
x
的全局错误(请注意错误的名称)。感谢您的解释!我想我需要买一本关于python的书,只是随机阅读教程就意味着我错过了这样的概念!哦,不知道你必须用Python来做这个,noob错误,谢谢!那么,您怎么可以从debug访问全局变量呢?@Pez:在Python中,默认情况下,变量被假定为本地变量。当您访问未在函数中赋值的变量时,Python将检查全局变量。然而,如果您分配给任何变量,Python会认为它必须是一个局部变量,除非您明确地说不是(即使有一个全局变量)。像
def foo():x+=10
这样的函数将引发未绑定的LocalError,即使存在名为
x
的全局错误(请注意错误的名称)。感谢您的解释!我想我需要买一本关于python的书,只是随机阅读教程就意味着我错过了这样的概念!
wDebug = None

def start(stdscr):
    global wDebug
    #...
    wDebug = curses.newwin(5, screenSize[1], 0, 0);