UnboundLocalError:赋值前引用的局部变量'conn'

时间:2011-12-21 09:30:23

标签: 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
        return

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

conn具有全局范围,在函数中引用之前被赋值为None - 为什么出现错误消息?

1 个答案:

答案 0 :(得分:7)

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

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

我的猜测是,您将在函数后面的某处为conn分配一些值,因此您必须使用global关键字。