问题:
最近在使用 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)