Екатерина
Екатерина

Почему в цикле из функции нельзя получить доступ к переменной? Python

Такой код (табуляция опущена) :
a = 0

def myFunc():

a+=1

print(a)

myFunc()

Интерпретатор выдаёт ошибку: local varriable 'a' referenced before assignment

Если же написать так:

a = 0

def myFunc():

if a == 0:

print(a)

myFunc()

Ошибки не будет, все работает.

В чем проблема? Почему я не всегда могу получить доступ к глобальной переменной? ? Что ща бред?

Первую часть неправильно написал! Вот так:
a = 0def myFunc():while a != 10:a+=1print(a)myFunc()

Короче строку while a != 10: забыл

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

Ан
Антон

Твоя переменная выходит за область видимости функции. myFunc(a) будет работать.

СБ
Светлана Бородулина

при изменении значения глобальной переменной в теле функции нужно объявить эту переменную как глобальную.

a = 0

def myFunc():
__global a
__while a != 10:
____a += 1
__print a

def myFunc1():
__if a == 0:
____print a

myFunc1()
myFunc()

Похожие вопросы
как создать цикл для переменной в C#?
Накатал такую страшную рекурсивную функцию на Python, можно ли ее как-то исправить?
(если что, не смейтесь) Как в python 3.3.0 остановить цикл if ?
Составьте таблицы изменения переменных для циклов
почему в си шарп так нельзя? две переменные в цикле фор объявить
Как сделать цикл с выводом переменной в TextBox с задержкой?
С++ использование функцией переменных
Почему переменную нельзя инициализировать внутри цикла?
Помогите с Python, цикл for
Цикл с параметром и предусловием в Python