天天看点

Python可变类型和不可变类型a+=a与a=a+a的异同

1. 当变量a是不可变类型数据时,a += a与 a = a + a的输出一致,变量a在函数内部的变化不会影响函数外全局变量a的值。

<code>a </code><code>=</code> <code>10</code>

<code>def</code> <code>sum_a(a):</code>

<code>    </code><code>a </code><code>+</code><code>=</code> <code>a</code>

<code>    </code><code>print</code><code>(a)</code>

<code>sum_a(a)</code>

<code>print</code><code>(a)</code>

<code>print</code><code>(</code><code>'-'</code><code>*</code><code>20</code><code>)</code>

<code>def</code> <code>sum_b(a):</code>

<code>    </code><code>a </code><code>=</code> <code>a </code><code>+</code> <code>a</code>

<code>sum_b(a)</code>

<code>输出:</code>

<code>20</code>

<code>10</code>

<code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code><code>-</code>

2. 当变量a是可变类型数据时,在函数中,a+=a不等于a=a+a!

a+=a是在全局变量a的内存地址上进行修改;而a=a+a是定义一个局部变量a,将a+a的值赋予它,全局变量a的值不变

<code>a </code><code>=</code> <code>[</code><code>11</code><code>, </code><code>22</code><code>]</code>

<code>[</code><code>11</code><code>, </code><code>22</code><code>, </code><code>11</code><code>, </code><code>22</code><code>]</code>

<code>[</code><code>11</code><code>, </code><code>22</code><code>]</code>

本文转自戴柏阳的博客博客51CTO博客,原文链接http://blog.51cto.com/daibaiyang119/1928787如需转载请自行联系原作者

daibaiyang119