永发信息网

python基础问题。为什么下面的代码得到输出是这样。 代码: def func(a=[]):

答案:2  悬赏:30  手机版
解决时间 2021-11-16 21:27
  • 提问者网友:记得曾经
  • 2021-11-16 01:39
python基础问题。为什么下面的代码得到输出是这样。 代码: def func(a=[]):
最佳答案
  • 五星知识达人网友:鱼芗
  • 2021-11-16 03:15
这个就是python里面的坑了 函数的默认参数是一个list 当第一次执行的时候实例化了一个list 第二次执行还是用第一次执行的时候实例化的地址存储 所以三次执行的结果就是 [1, 1, 1] 想每次执行只输出[1] ,默认参数应该设置为None追问所以说[]不是赋值一个空数组的意识?不应该是没次call函数都重新赋值一个空数组给a吗?为什么a好像成了静态变量,被所有函数共用。追答a=[] 不是空的意思 就是默认创建了一个长度为0的list 这个在定义函数的时候就创建了 又因为创建的a是一个变量 而且是不可变的对象 也就是始终指向同一地址 所以每次调用函数得到的a都会改变追问感觉你的解答,感觉python这个逻辑真心有点怪
全部回答
  • 1楼网友:掌灯师
  • 2021-11-16 04:44
def func(*args):
data = list(*args)
data.append(0)
return data
print(func())
print(func([1]))
print(func())
print(func([1]))
print(func())
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯