在Python中,我认为将要在函数内使用的变量传递给该函数并不是强制性的。
以下是示例代码:
def functionWithoutArgs():
print(theList)
theList.append('asdf')
print(theList)
theNewList = theList + ['qwer']
print(theNewList)
return theNewList
theList = ['this', 'is', 'a', 'list']
theLastList = functionWithoutArgs()
print(theLastList)
程序运行结果如下(无错误或警告):
['this', 'is', 'a', 'list']
['this', 'is', 'a', 'list', 'asdf']
['this', 'is', 'a', 'list', 'asdf', 'qwer']
['this', 'is', 'a', 'list', 'asdf', 'qwer']
我很惊讶没有出现任何异常。因为(在我看来),允许函数使用未传递给它们的变量会严重混淆该函数与其他代码的交互方式。
据我所知,函数的整个目的就是将程序拆分为小部分,并清楚地定义它们与其他代码的交互方式。
问题:
为什么Python允许在函数中使用未传递给该函数的变量?
附加信息:
示例中存在过多代码的原因是这个线程 Use a Variable in a Function Without Passing as an Argument 其中被接受的答案声称,仅当被调用的函数不修改或重命名变量时才允许使用未传递的变量(至少我是这样理解的),而上述代码反例。
我知道这个问题有点主观或基于意见,因为它是一个“为什么…”问题,但我认为这是如此基础,以至于必须有某种共识论证。此外,对于许多新的Python程序员来说,这将是有用的知识。