python - Python内部函数中传递变量的区别
问题描述
在 Python 中,以下两个代码都给出相同的结果 c = [0,-10] 之间有区别吗?
def foo1():
a = [0,1]
def foo2():
a[1] = -10
foo2()
return a
c = foo1()
和
def foo1():
a = [0,1]
def foo2(b):
b[1] = -10
foo2(a)
return a
c = foo1()
一些评论员认为这个问题可以回答这个问题。但它没有,因为我的问题是关于通过内部函数传递变量,而链接的问题没有。
解决方案
第一个,a
是一个自由变量,其值取自foo1
定义a
.
第二个,b
是一个局部变量,使用调用foo2
时传递给它的参数进行初始化,它是a
定义在 中的变量foo1
。
在每种情况下,您都分配-10
给同一列表的第二个“插槽”。
推荐阅读
- c# - 如何通过 InvokeHelper 将 variant* 传递给 C#?
- java - Servet - 为什么我得到空指针异常?
- javascript - 在导航上刷新 Vue 组件
- c++ - 按钮不更新
- weblogic - weblogic.rmi.extensions.DisconnectMonitorUnavailableException:无法为 [null] 注册 DisconnectListener
- javascript - 在延迟到期之前调用 JavaScript setTimeout 回调
- javascript - 为什么我们在前端框架中使用 ES6 模块而不是 CommonJS 进行导入
- r - 安装包和调用库成功后boxM函数出错
- c# - C# NUnit 和测试元组
- python-3.x - 使用方法链处理异常