Python文档似乎不清楚参数是通过引用还是值传递,以下代码生成未更改的值'Original'
class PassByReference:
def __init__(self):
self.variable = 'Original'
self.change(self.variable)
print(self.variable)
def change(self, var):
var = 'Changed'
Run Code Online (Sandbox Code Playgroud)
有什么我可以通过实际参考传递变量吗?
以下Python表达式之间有什么区别:
# First:
x,y = y,x+y
# Second:
x = y
y = x+y
Run Code Online (Sandbox Code Playgroud)
首先给出与第二个不同的结果.
例如,
第一:
>>> x = 1
>>> y = 2
>>> x,y = y,x+y
>>> x
2
>>> y
3
Run Code Online (Sandbox Code Playgroud)
第二:
>>> x = 1
>>> y = 2
>>> x = y
>>> y = x+y
>>> x
2
>>> y
4
Run Code Online (Sandbox Code Playgroud)
y在第一个中是3,在第二个中是4
我知道这a,b = b,a基本上是为一个元组赋予(a,b)另一个元组的值(b,a).这本质上是交换价值的形式a来b和b到a.因此,导致"交换".
这是swap()C++中函数的功能.
从研究中,我看到C++的swap()函数使用第三个临时变量来执行交换.我一直无法找到如何a,b = b,a在python中实现.
如何a,b = b,a实施?
python是否也使用第三个临时变量?如果没有,它是如何工作的?
两种操作如何在速度方面进行比较?我猜测如果python也使用第三个变量,执行时间的差异将归因于python的解释.
编辑:所有答案都很棒,但社区似乎认为Sapan是最好的.还要感谢a_guest,虽然没有发表回答,但他们在评论中给了我们很多信息.另外:每个人似乎都认为swap()只是因为它的C++而更快.我不一定同意这一点.如果以冻结二进制文件运行,Python可以非常快.