[英]Variable decleration in a 'try except' block of a recursive function
[英]Variable decleration in a 'try except' block of a recursive function
我想在 except 块中声明一个变量以在 try 块中使用该变量,所有这些都在递归函数中。
像那样:
def rec():
try:
print(l)
return
except NameError:
l = 1
rec()
它变成了一个无限循环,但为什么呢? 它应该尝试打印 l,正确地跳转到 Name-exception,在那里声明变量,递归调用 function,现在应该能够打印声明的变量。 但它一直在 except 块中跳跃? 有什么方法可以实现吗?
变量 l 仅存在于 except 块中。 如果你想这样做,你可以添加以下行:
global l
这将确保它可以在以下递归调用中访问。
因为l = 1
从未在任何单独的 function 调用中的print(l)
之前执行过。 期望它起作用就像期望它起作用一样:
a = 1
def test():
print(a)
function 调用自身不会使递归调用可以访问其中定义的任何变量,例如,无需将它们作为参数传递给递归调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.