值传递和引用传递

參考地址:http://www.dataguru.cn/thread-489552-1-1.html

python的值传递不会改变传入參数的值,而引用传递传入的是一个地址。有点相似c的指针。在运行完毕之后会改变传入地址所指的值。

值传递类型例如以下:

上面的代码仅仅是将a的值作为參数传递进去。程序运行完之后a的值并未改变

1
2
3
4
5
6
= 1
def change_integer(a):
    = + 1
    return a
print change_integer(a)
print a

结果:

2

1

[Finished in 0.1s]

引用传递的类型例如以下:

1
2
3
4
5
6
7
= [123]
def change_list(b):
    b[0]= b[0]+1
    return b
 
print change_list(b)
print b

结果:

[2, 2, 3]

[2, 2, 3]

[Finished in 0.1s]

而这里将b的地址传递进去之后,程序运行完之后b的值也随之改变。


怎样解决 变量 : 由 引用传递 变为 值传递??

方案例如以下:

1
2
3
4
5
6
7
8
9
import copy
 
= [123]
def change_list(b):
    b[0]= b[0]+1
    return b
 
print change_list(copy.deepcopy(b))
print b

结果:

[2, 2, 3]

[1, 2, 3]

[Finished in 0.1s]

FROM:http://my.oschina.net/repine/blog/601288

Python 值传递和引用传递的更多相关文章

  1. [转]Python中函数的值传递和引用传递

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

  2. python中变量在内存中的存储与地址关系解析、浅度/深度copy、值传递、引用传递

    ---恢复内容开始--- 1.变量.地址 变量的实现方式有:引用语义.值语义 python语言中变量的实现方式就是引用语义,在变量里面保存的是值(对象)的引用(值所在处内存空间的地址).采用这种方式, ...

  3. python的值传递与引用传递

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

  4. 深入理解python中函数传递参数是值传递还是引用传递

    深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...

  5. python的参数传递是值传递还是引用传递?都不是!

    [写在前面] 参考文章: https://www.cnblogs.com/spring-haru/p/9320493.html[偏理论,对值传递和引用传递作了总结] https://www.cnblo ...

  6. python的参数传递是值传递还是引用传递??

    函数参数传递机制,传值和引用的是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传递. 值传递(pa ...

  7. 错误处理: Python值传递和引用传递的问题

    1.插入数据库的时候报错110, 提示columns数量少于插入的值内容. 2.核对了下栏目并没有少,打印出插入的值,看看值是不是多了. 查看了下,确实第二次值的时候长度边长了,第二次把第一次的部分值 ...

  8. python函数值传递还是引用传递

    c/c++中有值传递引用传递的区别.但是python中是值传递还是引用传递呢?首先看python中对变量的定义 "python中变量是指向某个内存的, 而内存中的内容是不可变的." ...

  9. Java中引用类型变量,对象,值类型,值传递,引用传递 区别与定义

    一.Java中什么叫做引用类型变量?引用:就是按内存地址查询       比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里new了一个Stri ...

随机推荐

  1. Excel操作之VLOOKUP

    https://support.office.com/en-us/article/VLOOKUP-function-0bbc8083-26fe-4963-8ab8-93a18ad188a1 Use V ...

  2. hdoj--5563--Clarke and five-pointed star(简单几何)

    Clarke and five-pointed star Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  3. SVN在vs2013中使用

    http://download.csdn.net/download/show_594/9112963 内包含VisualSVN 5.0.1的官方原版安装包及破解文件VisualSVN.Core.L.d ...

  4. 把asp:CheckBoxList 变成单选框

    单选框代码 <asp:CheckBoxList runat="server" RepeatDirection="Horizontal" ID=" ...

  5. php数据类型及运算

    数据类型: 标量类型: int(intege), float, string, bool 复合类型: array, object 特殊类型: null, resouce进制转换十进制转二进制decb ...

  6. Python组织文件 实践:将文件的不同版本备份为ZIP文件

    功能:备份文件夹.能将文件的不同版本备份下来,并且每个有不同的名字 #! python3 # backupToZip.py - 备份文件的不同版本到压缩文件中 import zipfile,os #f ...

  7. C#版清晰易懂TCP通信原理解析(附demo)

    [转] C#版清晰易懂TCP通信原理解析(附demo) (点击上方蓝字,可快速关注我们) 来源:周见智 cnblogs.com/xiaozhi_5638/p/4244797.html 对.NET中网络 ...

  8. Testin实验室:陌陌APP通过率为94.92% 基本满足移动社交需求

    Testin实验室:陌陌APP通过率为94.92% 基本满足移动社交需求 2014/11/10 · Testin · 独家评測 11月8日,国内移动社交应用陌陌公开向美国证券交易委员会提交了IPO申请 ...

  9. Spring可扩展Schema标签

    基于Spring可扩展Schema提供自己定义配置支持 http://blog.csdn.net/cutesource/article/details/5864562 WARN : org.sprin ...

  10. iPad popView封装

    仿照UITableView的UITableViewDataSource 协义 1.代理.让代理帮我们类完毕一些方法 2.完毕当前类不能完毕的事情还有传值等功能 实现方法 // 1. 声明一个协议 // ...