Функция возвращает, но не имеет значения - PullRequest
0 голосов
/ 07 января 2012

У меня есть определенная функция, которая включает инструкцию возврата, но никакое значение не возвращается.Мой код выглядит следующим образом:

def seed(addy):

    # urllib2 stuff is here

    seed_result = re.search('<td>Results 1 - \d+ of (\d+)',seed_query)  # searches for '<td>Results 1 - x of y', captures 'y'
    seed_result = seed_result.group(1)  # this is 'y' from above

    # there's a call to a different function here which works properly    
    # other stuff going on here pertaining to addy but seed_result still has my string

    # now I want to return the seed_result string...
    return seed_result

# ... some code outside of the seed function, then I call seed...

seed(addy)
print "Result is %s" % seed_result

Я пробовал это с и без определения seed_result вне функции, чтобы «инициализировать» его, но это не влияет на результат, который заключается в том, что мой оператор печати в концевыдает "Result is" - нет seed_result.Я также обернул seed_result в круглые скобки в операторе return, хотя я считаю, что это правильно.Парэнс не имеет значения.

A установил очень простую, но похожую функцию в оболочке Python и назвал ее, как я, здесь, но это работает.Не уверен, что мне не хватает.

Спасибо за отзывы и рекомендации.

Ответы [ 3 ]

9 голосов
/ 07 января 2012

Вы не используете возвращаемое значение (например, присваиваете его переменной). Попробуйте это:

result = seed(addy)
print "Result is %s" % result
3 голосов
/ 07 января 2012

Два способа решения этой проблемы:

Во-первых, правильный , очевидный и простой способ на самом деле использует return ed значение:

seedresult = seed(addy)

Или вы используете глобальную переменную ( плохой стиль - избегайте любой ценой ):

seedresult = None

def seed(addy):
    global seedresult
    ...
0 голосов
/ 07 января 2012

Это вызвано тем, что None присваивается seed_result во время выполнения вашей функции.

Как определил Джон Скит, вы ничего не делаете с возвращаемым значением вашей функции. Вы должны также решить проблемы ниже.

В частности, вы ничего не делаете с параметром addy и ищете глобальную переменную seed_query. Я думаю, что поведение, которое вы видите, является результатом этого.

...