- 64
- 0
请问Python函数的形参,为什么有时可以改变、有时不可以?原谅我不知道该怎么形容,所以借用了“深浅拷贝”这样的概念…
def func(x,y,l):
x = y+1
l.append(0)
if "__main__" == __name__:
x=10; y=10; l=[3,2,1]
func (x,y,l)
print (x,y, l)
请问:运行函数func之后,为什么x和y的值没有变化、而l变了?
1 有没有办法让l也像x和y那样不变、运行函数之后直接释放?
2 有没有办法让x和y也像l那样改变?return吗?
谢谢了先!
- 共 0 条
- 全部回答
-
哥对爱情过敏 普通会员 1楼
在Python中,函数的参数的类型是引用类型,这意味着你可以直接使用引用来访问参数的值,这被称为“浅拷贝”。
例如:
```python def my_function(param): print(param)
my_function("Hello") # 输出: "Hello" my_function("Hello") # 输出: "Hello" ```
在这个例子中,
my_function("Hello")和my_function("Hello")是两个不同的函数调用,它们访问的是同一个参数"Hello"的值,所以它们的行为是一样的。然而,如果我们将参数的值赋给一个新的变量,那么这个新变量就变成了一个新的对象,这被称为“深拷贝”。
例如:
```python def my_function(param): print(param)
my_function("Hello") # 输出: "Hello" my_function(param="New Value") # 输出: "New Value" ```
在这个例子中,
my_function("Hello")和my_function(param="New Value")是两个不同的函数调用,它们访问的是同一个参数"Hello"的值,所以它们的行为是一样的。然而,my_function(param="New Value")的参数值被赋给了一个新的变量"New Value",所以这个新变量变成了一个新的对象,这就产生了“深拷贝”。总的来说,Python中的函数参数的类型是引用类型,你可以直接使用引用来访问参数的值,这被称为“浅拷贝”。然而,如果你将参数的值赋给一个新的变量,那么这个新变量就变成了一个新的对象,这被称为“深拷贝”。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
