python实现在函数中修改变量值的方法


Posted in Python onJuly 16, 2019

和其他语言不一样,传递参数的时候,python不允许程序员选择采用传值还是传引用。Python参数传递采用的肯定是“传对象引用”的方式。

实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,

就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,

就不能直接修改原始对象--相当于通过“传值'来传递对象。

python一般内部赋值变量的话,都是传个引用变量,和C语言的传地址的概念差不多。可以用id()来查询内存地址

下面的str_是可修改的对象,因此在add函数中可以修改:

#!/usr/bin/env python
#coding=utf-8
 
 
 
def add(s):
  s += 'b'
  print "In add function :", s
 
 
if __name__ == "__main__":
  str_ = list("aaa")
  add(str_)
  print "In main function:", str_

输出为:

In add function : ['a', 'a', 'a', 'b']
In main function: ['a', 'a', 'a', 'b']

下面的str_是不可修改的对象,因此在add函数中不能修改:

#!/usr/bin/env python
#coding=utf-8
 
 
 
def add(s):
  s += 'b'
  print "In add function :", s
 
 
if __name__ == "__main__":
  str_ = "aaa"
  add(str_)
  print "In main function:", str_
In add function : aaab 

In main function: aaa

关于python的复制

如果a=b的话, a和b的地址是相同的;如果只是想拷贝,那么就得用 a=b[:]。

!!!注意这一点,这可是可以引起重大错误的。。。

以上这篇python实现在函数中修改变量值的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用nntp读取新闻组内容的方法
May 08 Python
Python爬虫代理IP池实现方法
Jan 05 Python
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
如何在python字符串中输入纯粹的{}
Aug 22 Python
Python3编码问题 Unicode utf-8 bytes互转方法
Oct 26 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
Python正则表达式学习小例子
Mar 03 Python
keras.layer.input()用法说明
Jun 16 Python
用Python制作音乐海报
Jan 26 Python
python中%格式表达式实例用法
Jun 18 Python
python 同时读取多个文件的例子
Jul 16 #Python
Python中一个for循环循环多个变量的示例
Jul 16 #Python
python中多个装饰器的调用顺序详解
Jul 16 #Python
浅谈python多进程共享变量Value的使用tips
Jul 16 #Python
python多线程共享变量的使用和效率方法
Jul 16 #Python
Python 进程之间共享数据(全局变量)的方法
Jul 16 #Python
python实现键盘输入的实操方法
Jul 16 #Python
You might like
php入门学习知识点三 PHP上传
2011/07/14 PHP
双击滚屏-常用推荐
2006/11/29 Javascript
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
python使用cookielib库示例分享
2014/03/03 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
简单实现python进度条脚本
2017/12/18 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
简单了解python模块概念
2018/01/11 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
2020/04/08 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
浅谈Python 函数式编程
2020/06/20 Python
python实现三种随机请求头方式
2021/01/05 Python
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
考试不及格的检讨书
2014/01/22 职场文书
企业员工培训感言
2014/02/26 职场文书
班级出游活动计划书
2014/08/15 职场文书
普通话演讲稿
2014/09/03 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
vue router 动态路由清除方式
2022/05/25 Vue.js