Python中值传递和引用传递区别
【Python中值传递和引用传递区别】python中对一个函数可以传递参数,但是如何分辨是值传递还是引用传递,不是程序员手动控制的,而是python根据你传入的数据对象,自动识别的。
如果你传入的参数对象是可变对象:列表,字典,这个时候就是引用传递,如果参数在函数体内被修改,那么源对象也会被修改。
如果你传入的参数对象是不可变的对象:数字,元组,字符串,这个时候就是值传递。那么源对象是不会改变的,
例子一:
import sys a=2 b=[1,2,3] def change(x,y): x=3 y[0]=4 change(a,b) print a,b
输出结果: 2 [4, 2, 3];可以看出数字作为一个不可变对象,a的值没有变化,而b作为列表对象,是可变对象,所以b被改变了
例子二:
import sys a="11111" b={"a":1,"b":2,"c":3} def change(x,y): x="222" y["a"]=4 change(a,b) print a,b
输出结果:11111 {'a': 4, 'c': 3, 'b': 2},a作为字符串是不可变对象,所以没变化,b作为字典,是可变对象,所以被改变了
例子三:
import sys a=(1,2,3) b={"a":1,"b":2,"c":3} def change(x,y): x="222" y["a"]=4 change(a,b) print a,b
输出的结果:(1, 2, 3) {'a': 4, 'c': 3, 'b': 2}
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- Android事件传递源码分析
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Python数据分析(一)(Matplotlib使用)