2011-12-21 2 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) 

CONN 글로벌 범위를 가지고 있으며, 참조되기 전에 없음에 할당 기능 - 왜 오류 메시지?

당신이 global 키워드 기능에 변경하려는 글로벌 변수를 선언해야 파이썬에서
+0

전체 기능 본문에 붙여 넣지 않았습니다. 이 문제는 나중에이 범위에서 변수를 다시 바인딩하기 때문에 발생합니다. –

답변

5

:

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

내 생각 엔 당신이 기능 어딘가에 나중에 conn에 어떤 값을 할당하려고하는 것입니다을 따라서 global 키워드를 사용해야합니다.

+2

와우, 한번도 본 적이 없었습니다. PHP와 비슷합니다. –

+0

변수를 리 바인드하려는 경우에만 필요합니다. –

+0

@gnibbler : 물론 있습니다. 하지만 OP가 나중에이 기능을 수행하고 있다고 생각합니다. – Constantinius

관련 문제