关于Python:unboundlocalerror:局部变量的引用在assignment前

UnboundLocalError: local variable 'conn' referenced before assignment

本问题已经有最佳答案,请猛点这里访问。

我有一个错误(如标题所示),当我运行此脚本时会发生此错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
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
 ->%s"
% (conn_string)

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


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

1
2
3
4
5
def connectDb():
    global conn
    if conn is not None:   # Error occurs on this line
        return
    ...

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