2011-12-21 3 views
0

У меня есть ошибка (отображается в заголовке), которое происходит, когда я запускаю этот скрипт:UnboundLocalError: локальная переменная «подключ» ссылка Перед назначением

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) 

сопп имеет глобальный масштаб, и присваивается значение Нет, прежде чем ссылаться в функции - почему сообщение об ошибке?

+0

Вы не вставили в корпус всей функции. Проблема возникает из-за того, что в этой области вы повторно привязываете переменную. –

ответ

5

В питона вы должны объявлять глобальные переменные, которые вы хотите изменить в функции с global ключевого слова:

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

Я предполагаю, что вы собираетесь присвоить некоторое значение conn позднее в функции , поэтому вам нужно использовать ключевое слово global.

+2

Ничего себе, я никогда не видел этого раньше - выглядит как PHP :) –

+0

Это требуется только в том случае, если вы хотите переустановить переменную –

+0

@gnibbler: да, конечно. Но я думаю, что это то, что OP делает позже в функции. – Constantinius

Смежные вопросы