【发布时间】:2013-04-09 06:09:33
【问题描述】:
在过去的几个小时里,我在这里和其他地方阅读并进行了实验,但我并没有真正理解我确信是一个非常基本的概念:在不同函数之间传递值(作为变量)。
例如,我将一大堆值分配给一个函数中的列表,然后想稍后在另一个函数中使用该列表:
list = []
def defineAList():
list = ['1','2','3']
print "For checking purposes: in defineAList, list is",list
return list
def useTheList(list):
print "For checking purposes: in useTheList, list is",list
def main():
defineAList()
useTheList(list)
main()
根据我对函数参数的作用的理解,我希望这样做如下:
- 将“列表”初始化为空列表;调用 main(至少,我知道我做对了……)
- 在defineAList() 中,将某些值分配到列表中;然后将新列表传回 main()
- 在 main() 中,调用 useTheList(list)
- 由于 'list' 包含在 useTheList 函数的参数中,我希望 useTheList 现在将使用由 defineAList() 定义的列表,而不是调用 main 之前定义的空列表。
但是,这显然是一种错误的理解。我的输出是:
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
所以,既然“return”显然没有按照我的想法去做,或者至少它没有按照我认为应该的方式去做......它实际上做了什么?您能否使用这个示例向我展示我需要做什么才能从 defineAList() 中获取列表并在 useTheList() 中使用它?当我看到事情发生时,我倾向于更好地理解它们,但是我看到的很多正确参数传递的例子也使用了我还不熟悉的代码,在弄清楚发生了什么的过程中,我我并没有真正掌握这个概念。我正在使用 2.7。
ETA- 过去,问过类似的问题,有人建议我使用全局变量而不是局部变量。如果它在这里也是相关的——为了我正在上课的目的,我们不允许使用全局变量。
谢谢!
【问题讨论】: