Python UnboundLocalError:局部变量';康涅狄格州';分配前参考

Python UnboundLocalError:局部变量';康涅狄格州';分配前参考,python,Python,我在运行此脚本时出现了一个错误(如标题所示): import psycopg2 conn = None conn_string = "host='localhost' dbname='localdb' user='someuser' password='abracadabra'" def connectDb(): if conn is not None: # Error occurs on this line re

我在运行此脚本时出现了一个错误(如标题所示):

import psycopg2

conn                =  None
conn_string         = "host='localhost' dbname='localdb' user='someuser' password='abracadabra'"


def connectDb():
    if conn is not None:   # Error occurs on this line
        return

    # print the connection string we will use to connect
    print "Connecting to database\n ->%s" % (conn_string)

conn具有全局作用域,在函数中被引用之前被分配为None-为什么会出现错误消息?

在python中,您必须声明要在函数中使用
global
关键字更改的全局变量:

def connectDb():
    global conn
    if conn is not None:   # Error occurs on this line
        return
    ...

我猜您将在函数后面的某个地方为
conn
赋值,因此您必须使用
global
关键字。

Wow,我以前从未见过这样的情况-看起来有点像PHP:),只有您希望重新绑定variable@gnibbler:当然可以。但我认为这就是OP在函数后面所做的。我认为你是对的。您第一次看到它时会感到困惑,因为错误来自第一次使用变量时,而不是分配给您时,您还没有粘贴到整个函数体中。出现问题的原因是您稍后将在此范围内重新绑定变量