功能返回但没有价值

时间:2012-01-07 09:37:48

标签: python function return

我有一个定义的函数,它包含一个return语句但没有返回值。我的代码如下:

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来“初始化”它但是这对结果没有影响,这就是我最后的print语句产生“Result is” - 没有seed_result。我还在return语句中将seed_result包装在括号中,但我相信我的方法是正确的。 parens并没有什么不同。

在Python shell中设置一个非常基本但相似的函数,并像我在这里一样调用它,但是可行。不确定我错过了什么。

感谢您的反馈和指导。

3 个答案:

答案 0 :(得分:9)

您不是使用返回值(例如,将其分配给变量)。试试这个:

result = seed(addy)
print "Result is %s" % result

答案 1 :(得分:3)

解决这个问题的两种方法:

首先,正确明显简单方式实际上使用return ed值:

seedresult = seed(addy)

或者你使用全局变量(糟糕的风格 - 不惜任何代价避免):

seedresult = None

def seed(addy):
    global seedresult
    ...

答案 2 :(得分:0)

这是由于在执行您的功能期间None被分配到seed_result引起的。

正如Jon Skeet所说,你对函数的返回值一无所知。不过,您也应该解决以下问题。

特别是,您对参数addy无效,并且正在搜索全局变量seed_query。我想你所看到的行为就是这样的结果。