替代 Python 中的全局变量
Alternate to global variable in Python
我正在实现一个递归函数,我需要在其中记住一个全局值。我将在每次递归调用中递减此值,并希望它也反映在其他递归调用中。
这是我完成的方法。
第一种方式:
global a
a = 3
def foo():
global a
if a == 1:
print 1
return None
print a
a -= 1 # This new 'a' should be available in the next call to foo()
foo()
输出:
3
2
1
但我想用另一种方式,因为我的教授说全局变量很危险,应该避免使用它们。
此外,我并不是简单地将变量 'a' 作为参数传递,因为 'a' 在我的实际代码中只是为了跟踪一些数字,即跟踪我正在访问的节点的编号从头到尾。所以,我不想通过在每次调用中引入 'a' 作为参数来使我的程序变得复杂。
请给我建议解决上述问题的最佳编程实践。
不要使用全局;只需将 a
作为函数的参数:
def foo(a):
print a
if a == 1:
return None
foo(a-1)
foo(3)
试试这个:
使用参数而不是全局变量。
示例代码
a = 3
def foo(param):
if param == 1:
print 1
return None
print param
foo(param - 1)
foo(a)
我正在实现一个递归函数,我需要在其中记住一个全局值。我将在每次递归调用中递减此值,并希望它也反映在其他递归调用中。
这是我完成的方法。
第一种方式:
global a
a = 3
def foo():
global a
if a == 1:
print 1
return None
print a
a -= 1 # This new 'a' should be available in the next call to foo()
foo()
输出:
3
2
1
但我想用另一种方式,因为我的教授说全局变量很危险,应该避免使用它们。
此外,我并不是简单地将变量 'a' 作为参数传递,因为 'a' 在我的实际代码中只是为了跟踪一些数字,即跟踪我正在访问的节点的编号从头到尾。所以,我不想通过在每次调用中引入 'a' 作为参数来使我的程序变得复杂。
请给我建议解决上述问题的最佳编程实践。
不要使用全局;只需将 a
作为函数的参数:
def foo(a):
print a
if a == 1:
return None
foo(a-1)
foo(3)
试试这个: 使用参数而不是全局变量。 示例代码
a = 3
def foo(param):
if param == 1:
print 1
return None
print param
foo(param - 1)
foo(a)