【发布时间】:2015-03-05 15:21:18
【问题描述】:
我不太明白使用函数返回值与仅在函数中操作全局变量之间的区别。我读过的大多数指南和书籍似乎都鼓励使用前者而不是后者。
例如,这里有两个 Python 代码块(据我所知)做同样的事情:
someVariable = first_function(5)
def first_function (foo):
bar = foo + 1
return(bar)
anotherVariable = 0
second_function(5)
second_function (foo):
global anotherVariable
anotherVariable = foo + 1
当然,第一个示例看起来更简洁,但都得到相同的结果;他们获得了一个值为 6 的变量。那么有理由使用第一个示例而不是第二个示例吗?
【问题讨论】:
-
你应该尽量避免污染全局命名空间。
-
几行微不足道的代码,很难看出危害,但Global Variables Are Bad。
-
全局变量只有一个实例,意味着不可能递归。例如解析表达式 expr ::= expr op expr for a[0]+function(b+c)/5