文章预览
还记得上一次关于变量作用域文章最后的问题吗? Python常见问题:全局变量和局部变量 def func (m): m[ 0 ] = 20 m = [ 4 , 5 , 6 ] return m l = [ 1 , 2 , 3 ] func(l) print( 'l =' , l) 实际的输出我想大家都尝试过了吧,应该是: [20, 2, 3] 和80%人想象中的结果不一样。 这是为什么呢? 在 Python 的官方文档 FAQ 里有这样一句话 Remember that arguments are passed by assignment in Python. 要记住,Python 里的参数是通过赋值传递的。 https://docs.python.org/3/faq/programming.html#how-do-i-write-a-function-with-output-parameters-call-by-reference 所以要弄清楚参数传递,先得弄清 Python 的赋值。 或许在很多人的直观印象中,变量是一个容器;给变量赋值,就像是往一个存储的容器中填入一个数据;再次赋值就是把容器中的数据换掉。 然而, 在 Python 中,这种理解是错的! 在 Python 中,这种理解是
………………………………