计算机二级python题目求解
以下程序的输出结果是______。def func(x = [],y = ):
x.append(8)
y.append(8)
return(x+y)
a,b = ,
t=func(x=a)
t=func(y=b)
print(func(),end=";")
答案:;
解析: 第一步,把x=a=传入,y=,得到:x=, y=。
第二步,把y=传进去,x=,y=
第三步,把x=,y=传入,得到
求助:想不通为什么第三步传入的是x=,y=,而不是以默认值x=[],y=的形式传入?
我想的答案应该是才对,但实际操作后确实是,求大佬们给个简单易懂的解释{:5_111:}
https://fishc.com.cn/forum.php?mod=viewthread&tid=188187&ctid=1590 qiuyouzhi 发表于 2021-3-14 15:46
https://fishc.com.cn/forum.php?mod=viewthread&tid=188187&ctid=1590
谢谢大佬 qiuyouzhi 发表于 2021-3-14 15:46
https://fishc.com.cn/forum.php?mod=viewthread&tid=188187&ctid=1590
那为什么print不会打印第一次输入的值呢 柿子饼同学 发表于 2021-3-14 15:58
那为什么print不会打印第一次输入的值呢
?没有在那里写print啊 柿子饼同学 发表于 2021-3-14 15:58
那为什么print不会打印第一次输入的值呢
这是我修改之后的代码:
def func(x = [],y = ):
print(x,id(x)) #输出x的值,及地址
print(y,id(y)) #输出y的值及地址
x.append(8)
y.append(8)
return x+y
a,b = ,
t=func(x=a)
t=func(y=b)
print(func(),end=";")
运行结果:
64719208 #第一次x取值,默认值仍为[],没有被覆盖
27518736#第一次y取默认值,运行后y的默认值被覆盖为
[] 64294104 #第二次,x取默认值,运行后x的默认值被覆盖为
64291944#第二次,y取,默认值为第一次运行后的
64294104
27518736
;
至秦臻 发表于 2021-3-14 16:27
这是我修改之后的代码:
def func(x = [],y = ):
print(x,id(x)) #输出x的值,及地址
不是回我呀亲,不过会了就好{:10_275:} qiuyouzhi 发表于 2021-3-14 15:59
?没有在那里写print啊
我的意思是正常用print()的时候为什么不打印{:10_297:} 至秦臻 发表于 2021-3-14 16:27
这是我修改之后的代码:
def func(x = [],y = ):
print(x,id(x)) #输出x的值,及地址
很明了
页:
[1]