python的变量传递
2015-11-16 20:30
741 查看
python中变量都被视为对象的引用。python函数调用传递参数的时候,不允许程序员选择传值还是传引用,python参数传递采用的都是“传对象引用”的方式。
这种方式相当于传值和传引用的结合,如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象;如果函数收到的是一个不可变对象(比如数字、字符串或元组)的引用,就不能直接修改原始对象——相当于“传值”来传递对象。
python一般内部赋值变量的话,都是个引用变量,和c语言的传地址概念差不多。可以通过id(x)来查询x的内存地址。
如果 a=b的话,a和b的地址相同;如果只是想拷贝,就要用 a = b[:]
这种方式相当于传值和传引用的结合,如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象;如果函数收到的是一个不可变对象(比如数字、字符串或元组)的引用,就不能直接修改原始对象——相当于“传值”来传递对象。
def Func(x): x = 20 a = 10 Func(a) print(a) #输出10, 调用Func(a)时,Func内部的x变量指向整型对象10, #(即为整型对象10的引用)。在Func内部尝试修改一个不可变对象, #会使得Func内部的x指向一个新的对象20,而外部的变量a仍然指向不可变对象10. def Func2(x): x[0] = 20 a = [1,2,3] Func2[a] print(a) #结果为 [20, 2, 3]。
python一般内部赋值变量的话,都是个引用变量,和c语言的传地址概念差不多。可以通过id(x)来查询x的内存地址。
如果 a=b的话,a和b的地址相同;如果只是想拷贝,就要用 a = b[:]
相关文章推荐
- python之路day4
- Python基本语法
- Python学习笔记009_构造与析构
- 使用Python代码处理Excel
- python 函数
- 每天一点python--assert断言
- python
- python 做爬虫
- Python的re(正则表达式)模块学习笔记
- Python学习记录-2
- python压缩文件目录和移动到指定文件夹
- 模型
- Python - SyntaxError: Non-ASCII character '\xe7' in file解决方法
- python获取服务器端的时间
- Python - Windows下安装easy_install, pip 及whl文件安装方法
- 利用Zabbix API 获取各个分组下的服务器列表以及详细信息
- Python教程(二)显示行号
- kmeans 算法,python
- python安装MYSQLdb
- Python--线性代数篇