NameError:没有定义全局名称'reverse'
新的python ....真的与这个奇怪的错误混淆.... 我不认为我做错了什么,是吗?NameError:没有定义全局名称'reverse'
main.py
from methods import Reverse
def main():
b = [1,2,3,4,5,6,6,7,8,8,9,1,212,312,31,23,123455435,56,56,123]
a = "llaa"
thing = Reverse()
print thing.reverse(a)
main()
methods.py
class Reverse():
def __init__(self):
print "initialized reverse"
def reverse(self,var):
if var == "":
return var
else:
print var[-1] + reverse(var[:-1])
我试图做反向递归调用.... 敬请帮助。谢谢!
不像this
是隐含的一些其他语言,Python的需要你明确地说self
每当使用实例方法或变量,这样在Reverse
你需要明确地说
self.reverse(var[:-1])
当然reverse
并不返回任何东西,所以你需要将其更改为
return var[-1] + self.reverse(var[:-1])
实际上它应该是返回var [-1] + self.reverse(var [: - 1]) – user805981 2013-02-25 04:07:11
是的,我的错误 – Ric 2013-02-25 04:07:51
,但我们可以做一个打印?我认为我们可以将str()放在它的周围..:/ – user805981 2013-02-25 04:08:16
在你Reverse
类,reverse
是一个方法,所以你需要调用它的方法:
print var[-1] + self.reverse(var[:-1])
注意self
。
谢谢:) 现在..我得到这个'TypeError:不能连接'str'和'NoneType'对象' – user805981 2013-02-25 04:02:58
现在明白了:) thx !!! – user805981 2013-02-25 04:04:34
无论谁教过你'反向'应该是一类需要起诉的教育弊端。 – 2013-02-25 04:05:44
我回滚了你的编辑。如果您认为问题已解决,则应在下面的答案之一(绿色选中标记)中解决 - 不要将问题答案放在问题本身中。 – 2013-02-25 04:07:51