0
点赞
收藏
分享

微信扫一扫

python 函数参数与局部变量相同怎么处理?

楚木巽 2022-02-10 阅读 69


你好,我是悦创。接下来我发一下我一对一伯克利学员提问的一个问题:

def swap(a, b):
"""Swap the contents of lists a and b.

>>> a = [1, 'two', 3]
>>> b = [4, [5, 6]]
>>> swap(a, b)
>>> a
[4, [5, 6]]
>>> b
[1, 'two', 3]
"""

上面这个题目其实很简单,但是为了达到测试要求,不能修改变量。我原本给学员的代码:

def swap(a1, b1):
"""Swap the contents of lists a and b.

>>> a = [1, 'two', 3]
>>> b = [4, [5, 6]]
>>> swap(a, b)
>>> a
[4, [5, 6]]
>>> b
[1, 'two', 3]
"""
global a, b

a, b = b1, a1
# return
a = [1, 'two', 3]
b = [4, [5, 6]]
swap(a, b)
print(a, b)

其实,效果是达到了,但是细心的网友会发现,我改题目了。也就是函数参数被我修改了。最后,学员在 ok 系统上的运行结果:

python 函数参数与局部变量相同怎么处理?_python

网友的交流:

python 函数参数与局部变量相同怎么处理?_python_02

python 函数参数与局部变量相同怎么处理?_一对一_03

最后只能使用 copy 函数进行操作了。

def swap(a,b):
tempA = a.copy()
for i in range(len(a)):
a.pop()
for i in range(len(b)):
a.append(b[i])
for i in range(len(b)):
b.pop()
for i in range(len(tempA)):
b.append(tempA[i])

这个结果就成功了,我表示挺疑惑的。不过还是只能接受。

当然,还有更不一样的:

python 函数参数与局部变量相同怎么处理?_python_04


python 函数参数与局部变量相同怎么处理?_数据结构_05



举报

相关推荐

0 条评论