#python
Вопрос:
Я пытаюсь получить доступ к переменной внутри функции, которую я уже пытался сделать глобальной, но это не работает. Вот мой код (урезанный без ненужных объявлений переменных):
global col
col = 0
def interpret(text):
for char in text:
col = 1
Ошибка, которую я получаю, говорит:
Traceback (most recent call last):
File "main.py", line 156, in <module>
interpret(line) (Where I call the function in the rest of the code)
File "main.py", line 21 (5), in interpret
col = 1
UnboundLocalError: local variable 'col' referenced before assignment
Как я могу это исправить?
Комментарии:
1.
global col
должен быть внутриinterpret
.2. Каждая переменная в левой части назначения (также дополненная) в функции рассматривается как локальная, если явно не объявлена глобальной с помощью «global».
Ответ №1:
Вам нужно, чтобы global
оператор находился внутри функции:
col = 0
def interpret(text):
global col
for char in text:
col = 1
Назначение col
вне функции создает переменную, но для записи в нее внутри функции global
оператор должен находиться внутри каждой функции.
кстати, как программист, вы должны очень, очень, очень сильно стараться не использовать глобалы.
Вы должны передавать переменные в функции, чтобы они могли работать:
col = 0
def interpret(text, cnt):
for char in text:
cnt = 1
return cnt
text = ...
col = interpret(text, col) # pass col in and assign it upon return.
Комментарии:
1. Хорошо, я попробую это сделать. Ты сказал, что я не должен использовать глобалы. Есть ли альтернатива?
2. Да, вы должны передавать переменные в функции, чтобы они могли работать. Я обновлю свой ответ примером.