代码如下, 为什么 get_a
没有返回默认?
In [7]: a = [{'a':1},{'a':2}]
In [8]: a
Out[8]: [{'a': 1, 'b':'夏天'}, {'a': 2, 'b':'冬天'}]
In [9]: def filter_a(k,v):
...: return filter(lambda x: x[k] == v, a)
...:
In [10]: def get_a(k,v):
...: return next(filter_a(k,v), get_a('a',2)) # 我的想法是如果 iter 为空, 返回 这个默认
...:
In [11]: get_a('a',1)
报错如下
---------------------------------------------------------------------------
RecursionError Traceback (most recent call last)
<ipython-input-11-428f62971dec> in <module>
----> 1 get_a('a',1)
<ipython-input-10-a36c60ef3685> in get_a(k, v)
1 def get_a(k,v):
----> 2 return next(filter_a(k,v), get_a('a',2))
3
... last 1 frames repeated, from the frame below ...
<ipython-input-10-a36c60ef3685> in get_a(k, v)
1 def get_a(k,v):
----> 2 return next(filter_a(k,v), get_a('a',2))
3
RecursionError: maximum recursion depth exceeded while calling a Python object
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.