如何解决变量作为函数绑定
无论如何在python中使用阴影以便此代码不会永远循环?
class Node(object):
def __init__(self,value,next=None):
self.value = value
self.next = next
def list2LinkedListFoldrImp(nums):
ret = lambda x:x
for num in nums:
ret = lambda rs: ret(Node(num,rs)) # RecursionError: maximum recursion depth exceeded
return ret(None)
print(list2LinkedListFoldrImp([5,4,1]))
解决方法
该问题突出了一个事实,即只能在 Python 中捕获函数调用中的参数,这大概是因为环境仅在那里创建,否则会发生变异。由于这种混合作用域,我们不能只在任何地方捕获变量。
class Node(object):
def __init__(self,value,next=None):
self.value = value
self.next = next
# simple and correct (sans recursion)
def list2LinkedListFoldrImp(nums):
ret = lambda x:x
for num in nums:
ret = lambda rs,num=num,ret=ret: ret(Node(num,rs))
return ret(None)
print('ok foldr',list2LinkedListFoldrImp([5,4,1]))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。