函数(IV)的课后作业问题
x =def invert(x):
x = x[::-1]
invert(x)
print(x)
x =
def invert(x):
x[:] = x[::-1]
invert(x)
print(x)
这两段代码为什么打印结果不一样呢?
当在定义函数时使用print(x)时,发现在函数内部,x已经翻转了,但是一出函数,发现第一段函数没有改变x,小甲鱼老师的说法我没有完全理解 如果按照小甲鱼老师的解释,
x =
y = x
x = x[::-1]
x也会变成啊 影中人 发表于 2023-2-27 22:58
如果按照小甲鱼老师的解释,
x =
y = x
请对比以下两段代码:
>>> x =
>>> y = x
>>> x = x[::-1]
>>> x
>>> y
>>> x =
>>> y = x
>>> x[:] = x[::-1]
>>> x
>>> y
同样是赋值给 y,但是第一种方法并不会影响 y 的值,而第二种则会同时修改 y 的值。 小甲鱼 发表于 2023-2-28 04:04
请对比以下两段代码:
这是为啥呢,是因为x是指代的对的引用,而x[:]指代的是内存中实际存放的吗? 第一段代码中函数内部试图重新赋值外部变量x,所以外部变量x被python屏蔽保护,函数内部的那个x和外面那个x不是同一个变量。
第二段代码中函数内部通过列表分片修改列表,这是允许的,不会触发屏蔽保护。
页:
[1]