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实现域名系统(DNS)正向查询的方法
Apr 19 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
django 按时间范围查询数据库实例代码
Feb 11 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
Python3使用pandas模块读写excel操作示例
Jul 03 Python
flask框架视图函数用法示例
Jul 19 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
使用PyCharm创建Django项目及基本配置详解
Oct 24 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
Python threading.local代码实例及原理解析
Mar 16 Python
对python中各个response的使用说明
Mar 28 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 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生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JavaScript中的small()方法使用详解
2015/06/08 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
详解JavaScript的流程控制语句
2015/11/30 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
浅析Vue下的components模板使用及应用
2019/11/27 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
利用一个简单的例子窥探CPython内核的运行机制
2015/03/30 Python
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
python 重命名轴索引的方法
2018/11/10 Python
python的依赖管理的实现
2019/05/14 Python
python语言元素知识点详解
2019/05/15 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
python操作yaml说明
2020/04/08 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
华为慧通笔试题
2016/04/22 面试题
学校岗位设置方案
2014/01/16 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
股权转让协议书
2014/12/07 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书