初学python--参数传递方式
2016-01-19 20:19
666 查看
因为要面试EMC的实习,之前完全没有接触过Python,只有两天时间准备,遇到所有编程语言都会有的问题,参数传递问题。
经过自己试验以及在网上查阅资料总结如下:
Python既是值传递也是引用传递。在类似a=b的赋值过程中,传递的是引用,也就是a与b指向同一个地址,如果a改变那么b的值也相对改变。
函数参数传递:如果参数是可变对象如列表、字典,则为引用传递,也就是说会改变原有值。
例如:函数change(a):
a[1]='a'
x=[1,'']
change(x)
结果为x=[1,'a']
可见直接改变列表的内容
但是有个容易产生误解的地方 如果函数是change(a):
a=[10]
x=[1]
change(x)
结果为x=[1]
可见没有改变列表内容,这是什么原因呢,上面的函数等价于x=[1], a=x,a=[10],这里很明显x的值不会变的,因为a指向了新的地址
如果参数是不可变对象如数字、字符或者元组,则为值传递,则不会改变原值。
经过自己试验以及在网上查阅资料总结如下:
Python既是值传递也是引用传递。在类似a=b的赋值过程中,传递的是引用,也就是a与b指向同一个地址,如果a改变那么b的值也相对改变。
函数参数传递:如果参数是可变对象如列表、字典,则为引用传递,也就是说会改变原有值。
例如:函数change(a):
a[1]='a'
x=[1,'']
change(x)
结果为x=[1,'a']
可见直接改变列表的内容
但是有个容易产生误解的地方 如果函数是change(a):
a=[10]
x=[1]
change(x)
结果为x=[1]
可见没有改变列表内容,这是什么原因呢,上面的函数等价于x=[1], a=x,a=[10],这里很明显x的值不会变的,因为a指向了新的地址
如果参数是不可变对象如数字、字符或者元组,则为值传递,则不会改变原值。
相关文章推荐
- ubuntu14.04LTS下编译安装Open Babel和python语言绑定
- Python【基础第一篇】
- 【python】获取三维图形的某个截面
- webvtt字幕转srt字幕的python程序(附改名程序)
- Python-map()函数格式化不规则输入
- python 实现布尔莎转换模型
- Python-用filter()删除1~100的素数和一些思考
- python 下载整个站点
- Python字典的json格式化处理
- python threading的学习
- Python批量将excel文件转化为txt
- 使用Python处理目录(二):计算某个目录下特定文件类型中文件总行数
- 使用Python处理目录(一):打印目录下的文件名
- python string与list互转
- python简单爬虫--转源码
- python开发学习-day03(set集合、collection系列 、深浅拷贝、函数)
- python 函数操作
- Python 线程池 最简单例子
- python int方法
- 【LEETCODE】48-Rotate Image [Python]