问题:
最近在使用 python3 刷题,发现一个比较奇怪的现象,想用闭包的特性去使用一个外层作用域的变量,如果这个变量是 list 的话,则 ok ,非 list 就会报错,我需要怎么做才可以闭包使用整数变量呢?
如下面 ide 截图这样: https://imgtu.com/i/LsNiB8
代码如下:
class Solution:
def isValidBST(self, root: TreeNode) -> bool:
pre = -sys.maxsize -1
o = []
def trace(root) -> bool:
if not root:
return True
if not trace(root.left): return False
o.append(root.val) # 为什么 list 可以被闭包进来
if pre >= root.val: # 但是整数变量却不行呢?
return False
else:
pre = root.val
if not trace(root.right):return False
return True
return trace(root)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.