函数调用 return func 和 return result 有什么区别吗?
函数调用 return func 和 return result 运行结果是一样的,这两种写法的区别是什么?
def func(list):
list[0] = 4
return func # 和 return list 有什么区别吗?
if __name__ == '__main__':
list = [1,2,3]
func(list)
print(list)
1
Trim21 2022-08-06 10:36:15 +08:00
你这个例子里不需要函数的返回值,你就是不 return 都可以...
|
2
reter 2022-08-06 10:48:40 +08:00 via Android
返回 func 可以链式调用? func(list)(list1)(list2)
|
3
zhuweiyou 2022-08-06 10:53:39 +08:00
你这个例子跟 return 半毛钱关系都没有
|
4
xiri 2022-08-06 11:46:37 +08:00 via Android
我寻思着你这个例子也用不上 retrun 的东西啊
|
5
zxCoder 2022-08-06 13:50:15 +08:00
????? 啥问题这是
|
6
JounQin 2022-08-06 15:07:58 +08:00 via iPhone 1
这就是 Python 程序员?
|
7
DOLLOR 2022-08-06 15:11:00 +08:00
我怀疑又是 X-Y 问题
|
8
markgor 2022-08-06 15:29:20 +08:00
我不熟 python ,
但是我记得有变量域存在的吧? 1->list = [1,2,3] 2->func(list) 2.1->list[0] = 4 2.2->return func 3->print(list) 結果:[1,2,3] 因為 func 中修改 list 並不會導致外部的 list 變動(變量域) 所以無論 func 最後 return 什麼,都不會對外部的 list 改變 而為什麼是 return func ,那是為了鏈式調用,如 2# 所說的。 |
9
learningman 2022-08-06 16:14:15 +08:00 via Android
如果这是 python 的话,你还把默认的 list shadow 掉了
|
10
ispinfx 2022-08-06 17:43:17 +08:00 via iPhone
这个问题有点离谱
|
11
snw 2022-08-06 17:53:46 +08:00 via Android 1
@markgor
Python 的 list 是 mutable ,所以函数传参时传的是引用,所以在函数内对 list 的操作会影响到被传入的 list ,所以结果是[4,2,3] |
13
t2jk4000 2022-08-06 21:25:09 +08:00
建议楼主好好跟着书上的例子学吧,现在先别想这些有的没的
|
14
Osk 2022-08-06 23:07:58 +08:00 1
@snw 哈哈, 想到了 python 的神坑之一:
def func(a=[]): ... lz 你好, 这种写法可能会埋下 bug, 稍微好一点点的写法是, func 中接收到传入的 list 后, 对源列表进行一次复制, 使用 new_list = list.copy() 或 new_list = list[:] 都行, 然后对 new_list 进行操作. 原因楼上解释了 |
15
muzuiget 2022-08-07 07:36:17 +08:00
实际上 func 运行了个寂寞。
|