В следующем коде есть два блока try. Переменная connection из первого блока используется во втором:
names = []
try:
connection = psycopg2.connect(
dbname=config.dbname,
user=config.user,
password=config.password,
host=config.host
)
except Exception as e:
print('error db connection')
try:
cursor = connection.cursor()
query = 'select * from names;'
cursor.execute(query)
records = cursor.fetchall()
for row in records:
names.append(row[1])
except:
print('error table data')
Я не понимаю как такое возможно, ведь try является блоком и по моему мнению видимость переменной connection ограничена первым блоком try, вне его она недоступна.
Однако во втором блоке запрос отрабатывает, используя значение переменной connection.
Скажите пожалуйста, try является каким-то особенным блоком, который не ограничивает область видимости?