python - 替代Python中的全局变量

标签 python recursion global

我正在实现一个递归函数,我需要在其中记住一个全局值。我将在每次递归调用中递减此值,并希望它也反射(reflect)在其他递归调用中。

这是我完成的一种方法。

第一种方式:

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)

关于python - 替代Python中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33399141/

相关文章:

javascript - 覆盖现有的 JavaScript 函数

javascript - webpack 2 将 webworker 公开为全局

用于洗钱检测的 Javascript 递归

Python 无限递归与生成器

python - 自动调整 IPython 小部件布局

python - TypeError : write() argument must be str, 不是字节(Python 3 与 Python 2)

bash - 打印包依赖树

c++ - 对匿名右值的引用已损坏

Python 脚本问题

python - 碎片化 1.0 : How to run crawler in Celery?