Python心法:a,b=b,a原理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Arctic_Beacon/article/details/83268368

交换两个变量的值,Python的这条指令颠覆很多人的三观。这是因为大家的三观是学C语言建立的。

在C语言中,系统会为每个变量分配内存空间。而在python中,Python为每个值分配内存空间。

所以,a,b=b,a 这条指令,先是变量a被赋“b值”的地址,然后变量b被赋“a值”的地址,所以没毛病。

再看一个例子,用Python输出一个Fibonacci数列。

Fibonacci数列是F[n]=F[n-1]+F[n-2],(n>=3,F[1]=1,F[2]=1)

a,b = 0, 1

while b<100:

    print (b),

    a, b = b, a+b

输出:1 1 2 3 5 8 13 21 34 55 89

可以看出:计算过程中,先是变量a被赋“b值”的地址,然后变量b被赋“a值+b值”。

Python这样管理哲学是值很大又是双精度的话占用的字节数也会很大,但是变量只是存储这个值的内存地址。在图像处理节省的内存空间还是很可观的,一个变量不须赋予二维数组的全部值,而是赋予二维数组的内存地址。但是需要注意的是,变量太多了共同指向一个二维数组会产生混乱,应该适当应用命令:a=numpy.copy(b)。

总结:变量并不直接存储值,而只是引用一个内存地址。

猜你喜欢

转载自blog.csdn.net/Arctic_Beacon/article/details/83268368
B
a^b
A/B
A*B