【发布时间】:2019-02-12 08:25:03
【问题描述】:
请帮助我,因为我是 python 新手
当我调用这个函数时,list1 的原始值发生了变化
def mystery(list1):
list1[0] , list1[1] = list1[1], list1[0]
list1 = [7,82,44,23,11]
mystery(list1)
print(list1) #prints [82, 7, 44, 23, 11]
它如何改变全局list1 的值
如果我将我的功能更改为
def mystery(list1):
list1 = list1 + list1[2:5]
然后我得到list1 的全局值,而不是更新后的值。
【问题讨论】:
-
在函数末尾使用
return将更新后的值传回给调用者怎么样? -
是的,但是我对 python 中的局部变量和全局变量感到困惑,这里在第一个函数中 list1 的值被更改为新的 list1 而没有返回。但在第二个函数中它保持不变。
-
list1 = list1 + list1[2:5]创建一个新的列表对象list1,其可见性仅在函数内。当您在外部引用list1时,您访问的是旧的list1。在这里,list1[0] , list1[1] = list1[1], list1[0],更新了相同的列表对象,这就是为什么您会在输出中看到更新的值。 -
谢谢,@Austin 我明白了。
标签: python python-3.x list global-variables local-variables