所以我已经毕业了,拿到了我的compsci学位的所有学分。但我上学期的教授给我发了一封邮件,说他在我的一个作业中发现了一些有趣的东西。我忘了上下文,但我认为这无关紧要。我会发邮件交换的。在
嗨,学生,
我注意到你的一个作业答案有点奇怪:
def swap(i,j):
tmp = i
i = j
j = tmp
return i,j
这很管用,但有什么问题吗?
哦,是的,我在用C语言思考,在python中不可以这样做:
^{pr2}$然后Python将优化堆栈上的交换,根本不需要tmp变量。在
这是真的,但还有一个更微妙的概念混乱
所以我的问题是:我在这里遗漏了什么?在
他所期待的只是Python式的交换方式:
考虑一下在Python中如何调用
swap
,而在C中如何调用swap函数例如,在C语言中
有效,并将}中的内存交换(假设{}的实现是正确的)。在
a
中的内存与{但是,在Python中
^{pr2}$…什么都不做!你必须分配结果:
但你为什么不直接做呢
完全抛弃swap()函数?在
如果您真正理解Python和C之间的区别,那么您将能够解释为什么Python swap函数不能在不分配结果的情况下交换两个变量。在
你的功能似乎太复杂了,你当然可以这么做
def交换(i,j): 返回j,i
只需一行代码就能实现同样的效果?在
相关问题 更多 >
编程相关推荐