值传递和引用传递

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

值传递类型如下:

上面的代码只是将a的值作为参数传递进去,程序执行完之后a的值并未改变

a = 1

def change_integer(a):

a = a + 1

return a

print change_integer(a)

print a

结果:

2

1

[Finished in 0.1s]

引用传递的类型如下:

b = [1, 2, 3]

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的值也随之改变。

如何解决 变量 : 由 引用传递 变为 值传递??

方案如下:

import copy

b = [1, 2, 3]

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]

python引用传递和值传递的区别_Python 值传递和引用传递相关推荐

  1. python实例方法、类方法、静态方法的区别_Python 实例方法、类方法、静态方法的区别与作用...

    Python 实例方法.类方法.静态方法的区别与作用 一.总结 一句话总结: 实例方法:第一个参数必须是实例对象,该参数名一般约定为"self",通过它来传递实例的属性和方法(也可 ...

  2. python中的return和print的区别_python中return和print的区别(详细)

    Huskiesir python最近正在研究.今天,我面临一个问题,那就是,返回和印刷的区别.双方都能输出结果.的区别是什么?闲话少说,看下面的例子.# Code1: def break_words( ...

  3. python中单引号和双引号的区别_python中单引号和双引号的区别

    在Python当中表达字符串既可以使用单引号,也可以使用双引号,那两者有什么区别吗? python单引号和双引号的区别 简单来说,在Python中使用单引号或双引号是没有区别的,都可以用来表示一个字符 ...

  4. python中的字典和类的区别_Python中的 字典和字典数据类型

    字典 1.字典是Python的内建数据类型,我们知道序列是以连续的整数为索引,而字典用关键字作为索引.特别的,关键字必须是不可变类型,常为字符串或者数值. #如果元组中只包含字符串和数字,它可以作为关 ...

  5. python中协程与函数的区别_python协程和异步IO

    1.并发.并行.同步.异步.阻塞.非阻塞 并发:是指在同一个时间段内,有几个程序都处于启动运行到运行结束之间 并行:在同一个时间点上,有几个程序同时运行 同步:当一个同步操作发出去后,调用者一直等待返 ...

  6. python中的方法和函数的区别_python中函数与方法的区别?

    Python中函数不是方法,主要有以下区别: 首先,从分类的角度来分析二者的区别 (1)函数的分类: 内置函数:python内嵌的一些函数. 匿名函数:一行代码实现一个函数功能. 递归函数:自己调用自 ...

  7. python中元祖 字典 列表的区别_Python中元祖,列表,字典的区别

    原博文 2016-08-16 15:25 − Python中有3种內建的数据结构:列表.元祖和字典: 1.列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目. 列表中的 ...

  8. python中init和setup有什么区别_python – 为什么setup.py在安装期间运行模块__init__.py?...

    我正在使用setup.py安装包: python setup.py install 我正在安装的软件包中的__init__.py包含一些软件包级别检查,其中一个检查settings.py中是否有可用的 ...

  9. python中单引号和双引号的区别_python中单引号,双引号,多引号区别

    先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行 如: s1 = "hello,world" 如果要写成多行,那么就要使用\ ("连行符")吧 ...

最新文章

  1. 系统架构设计师难吗?IT行业员工的最高荣耀是什么
  2. NIO详解(十二):AsynchronousFileChannel详解
  3. macOS Monterey新问题:“内存泄漏”,应用后台运行消耗上百 GB 内存
  4. su 、 sudo 命令及限制 root 远程登录
  5. ACM Robot Motion
  6. Git 报错:error: The requested URL returned error: 401 Unauthorized while accessing
  7. 无痛学习ISAC(一)
  8. 纯干货:嘀嘀打车App初期是怎么推广的? 钱皓-互联网分析师,微信号(qianhaoapp)
  9. R语言使用timeROC包计算存在竞争风险情况下的生存资料多时间AUC值、使用cox模型、并添加协变量、R语言使用timeROC包的plotAUCcurve函数可视化多时间生存资料的AUC曲线
  10. 刷题记录:牛客NC23803DongDong认亲戚
  11. Qt5.12 使用FFmpeg实时解码播放H264/H265摄像头记录(直传数据法)
  12. 移动端——less(学会less,这一篇就够了)
  13. crontab 奇数时间定时执行
  14. rk 平台实现 otg 软切换
  15. storyboard 使用
  16. python - 啃书 第七章 模块、包和库 (二)
  17. Linux内存控制器(一)
  18. 计算机硕士跨专业考研建筑,由建筑专业到计算机专业跨专业考研,好心人垂教阿...
  19. 【ZZULIOJ】1103: 平均学分绩点(函数专题)
  20. catia直线测距怎么调出来_基于CATIA和激光跟踪仪的部件设计检验一体化方法与流程...

热门文章

  1. java验证各种文件内容合法性
  2. 校园导航系统(导航方式:步行,骑行,车行)
  3. 在flutter中使用NFC(超全)
  4. QTableView 列宽设置解释
  5. matlab用lu求逆矩阵,Matlab实现——求矩阵的逆(LU分解) | 学步园
  6. 自推式拖车行业调研报告 - 市场现状分析与发展前景预测
  7. Html5画布操作-旋转 | rotate()
  8. linux mv合并目录,合并文件夹与MV?
  9. 在word07中如何添加单独一页横向文件
  10. dumpsys procstats详解