Divergent
Март 16, 2010 14:05:31
Хелп ми…
Не могу понять в чём косяк объявленной мною функции.
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 в другом цикле.
Ferroman
Март 16, 2010 14:26:55
Там же ясно написано “local variable ‘s’ referenced before assignment”. Если условие не выполняется, то переменная не создаётся, а вы её вернуть хотите, как результат.
sp3
Март 16, 2010 14:30:34
у вас переменная s не создается если не выполняется тело функции “if re.search(r”\d{6}\n“,l):”
upd Ferroman опередил :)
igor.kaist
Март 16, 2010 14:34:43
Условие if не выполнилось, откуда ж взяться переменной s?!
Divergent
Март 16, 2010 14:35:04
Так я же специально и подобрал в примере так, что условие выполняется.
l=112233\n
если я уберу return s, то сразу всё выполняется, присваевается, печается
а вот почему не присваивается s не понятно.
Возможно я что-то не правильно делаю по отступам return s?
По примерам посмотрел. Отступ на уровне if
Divergent
Март 16, 2010 14:43:35
Поставил в теле и всё получилось, хотя чуть ранее не получалось…Видимо где-то с опечатками.
UsCr
Март 16, 2010 14:45:27
Делайте return l и не будет бед у вас.