1.首先,对于可变参数和不可变参数,是不一样的;
- 可变类型,值可以改变:
- 列表 list
- 字典 dict
- 不可变类型,值不可以改变:
- 数值类型 int, long, bool, float
- 字符串 str
- 元组 tuple
2.Python中函数参数是引用传递(不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。
3.举例说明
(1)a =a+i
>>> def addtest(a):
... a=a+a
... print a
...
对于可变参数,不会影响本身:
对于不可变参数,也不会影响本身
(2)a+=i:定义函数如下:
>>> def selfadd(a):
... a+=a
... print a
...
对于不可变参数:不会影响到不可变参数本身
对于可变参数:会影响到可变参数本身
综上:
+= 是 + 的一种升级版本, 具有能把执行后的结果再写回传递来的变量本身的功能, 可变变量自身有比不可变变量多一个魔法方法 _iadd_, += 操作调用 _iadd_方法,没有该方法时,再尝试调用_add_方法, 不可变变量没有_iadd_方法