Jestem całkiem nowy, Python, tu jest jakiś kod patrzę:Korzystanie zmienną w try, catch, finally bez deklarowania go poza
try:
connection = getConnection(database)
cursor = connection.cursor()
cursor.execute("some query")
except:
log.error("Problem.")
raise
finally:
cursor.close()
connection.close()
Czy to czyszczone prawidłowo? W innych językach, w których napisałem, jestem przyzwyczajony do robienia czegoś takiego:
connection = None
cursor = None
try:
connection = getConnection(database)
cursor = connection.cursor()
cursor.execute("some query")
except:
log.error("Problem.")
raise
finally:
if cursor is not None:
cursor.close()
if connection is not None:
connection.close()
Mam nadzieję, że to ma sens, ale "jak daleko" jest dostępne ? Zakładam, że funkcja ta będzie go zawierała, a co z instrukcjami i pętlami? – Cheetah
Jeśli cały blok znajduje się w funkcji, jest on dostępny od tej chwili do końca funkcji. Jeśli jest na poziomie modułu, jest dostępny globalnie w tym module. Jeśli instrukcje i pętle nie wprowadzają nowego zakresu. –