我有一个定义的函数,它包含一个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中设置一个非常基本但相似的函数,并像我在这里一样调用它,但是可行。不确定我错过了什么。
感谢您的反馈和指导。
答案 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
。我想你所看到的行为就是这样的结果。