我有一个关于
python函数范围的问题.我已经包含了一个示例,说明了我遇到的问题.
fun0重新定义了varible c列表中的第一个条目.这个变化反映在fun0之外,即使我没有从fun0返回任何值.
fun1完全重新定义变量c,但更改不会在fun1之外反映出来.同样,fun2重新定义了c,并且更改不会在fun2之外反映出来.
我的问题是,为什么fun0修改主函数中的val3,而fun1和fun2分别不修改val4和val7?
def fun0(a, b, c):
c[0] = a[0] + b[0]
return
def fun1(a, b, c):
c = a[0] + b[0]
return
def fun2(a, b, c):
c = a + b
return
def main():
val1 = ['one']
val2 = ['two']
val3 = ['']
fun0(val1, val2, val3)
print val3
val4 = []
fun1(val1, val2, val4)
print val4
val5 = 1
val6 = 1
val7 = 0
fun2(val5, val6, val7)
print val7
return
if __name__=='__main__':
main()