至秦臻 发表于 2021-3-14 15:42:25

计算机二级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:}

qiuyouzhi 发表于 2021-3-14 15:46:43

https://fishc.com.cn/forum.php?mod=viewthread&tid=188187&ctid=1590

至秦臻 发表于 2021-3-14 15:57:08

qiuyouzhi 发表于 2021-3-14 15:46
https://fishc.com.cn/forum.php?mod=viewthread&tid=188187&ctid=1590

谢谢大佬

柿子饼同学 发表于 2021-3-14 15:58:16

qiuyouzhi 发表于 2021-3-14 15:46
https://fishc.com.cn/forum.php?mod=viewthread&tid=188187&ctid=1590

那为什么print不会打印第一次输入的值呢

qiuyouzhi 发表于 2021-3-14 15:59:37

柿子饼同学 发表于 2021-3-14 15:58
那为什么print不会打印第一次输入的值呢

?没有在那里写print啊

至秦臻 发表于 2021-3-14 16:27:43

柿子饼同学 发表于 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 17:43:46

至秦臻 发表于 2021-3-14 16:27
这是我修改之后的代码:
def func(x = [],y = ):
print(x,id(x))   #输出x的值,及地址


不是回我呀亲,不过会了就好{:10_275:}

柿子饼同学 发表于 2021-3-14 18:21:06

qiuyouzhi 发表于 2021-3-14 15:59
?没有在那里写print啊

我的意思是正常用print()的时候为什么不打印{:10_297:}

爱俯卧撑的123 发表于 2022-8-10 14:34:20

至秦臻 发表于 2021-3-14 16:27
这是我修改之后的代码:
def func(x = [],y = ):
print(x,id(x))   #输出x的值,及地址


很明了
页: [1]
查看完整版本: 计算机二级python题目求解