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

5 投票
1 回答
23763 浏览
提问于 2025-04-17 08:45

我在运行这个脚本时遇到了一个错误(标题中提到的)。

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 个回答

13

在Python中,如果你想在函数里修改全局变量,就需要用到global这个关键词来声明它。

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

我猜你是在函数的后面某个地方要给conn赋值,所以你需要使用global这个关键词。

撰写回答