Уведомления

Группа в Telegram: @pythonsu

#1 Март 16, 2010 14:05:31

Divergent
От:
Зарегистрирован: 2010-01-27
Сообщения: 53
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование локальной переменной функции.

Хелп ми…

Не могу понять в чём косяк объявленной мною функции.

def NOMER(l):
if re.search(r“\d{6}\n”,l):
print l
s=l
return s

Дальше в окне даю
>>> l=f1.readline()
>>> print l
112233

>>> NOMER(l)

Traceback (most recent call last):
File “<pyshell#94>”, line 1, in <module>
NOMER(l)
File “<pyshell#75>”, line 5, in NOMER
return s
UnboundLocalError: local variable ‘s’ referenced before assignment

Нужно чтобы далее я мог использовать переменную s в другом цикле.



Офлайн

#2 Март 16, 2010 14:26:55

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Использование локальной переменной функции.

Там же ясно написано “local variable ‘s’ referenced before assignment”. Если условие не выполняется, то переменная не создаётся, а вы её вернуть хотите, как результат.

Офлайн

#3 Март 16, 2010 14:30:34

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Использование локальной переменной функции.

у вас переменная s не создается если не выполняется тело функции “if re.search(r”\d{6}\n“,l):”

upd Ferroman опередил :)



Отредактировано (Март 16, 2010 14:32:44)

Офлайн

#4 Март 16, 2010 14:34:43

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Использование локальной переменной функции.

Условие if не выполнилось, откуда ж взяться переменной s?!



Офлайн

#5 Март 16, 2010 14:35:04

Divergent
От:
Зарегистрирован: 2010-01-27
Сообщения: 53
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование локальной переменной функции.

Так я же специально и подобрал в примере так, что условие выполняется.

l=112233\n

если я уберу return s, то сразу всё выполняется, присваевается, печается

а вот почему не присваивается s не понятно.

Возможно я что-то не правильно делаю по отступам return s?
По примерам посмотрел. Отступ на уровне if



Отредактировано (Март 16, 2010 14:39:45)

Офлайн

#6 Март 16, 2010 14:43:35

Divergent
От:
Зарегистрирован: 2010-01-27
Сообщения: 53
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование локальной переменной функции.

Поставил в теле и всё получилось, хотя чуть ранее не получалось…Видимо где-то с опечатками.



Офлайн

#7 Март 16, 2010 14:45:27

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование локальной переменной функции.

Делайте return l и не будет бед у вас.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version