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 lxml模块安装教程
Jun 02 Python
Python tornado队列示例-一个并发web爬虫代码分享
Jan 09 Python
python+django+sql学生信息管理后台开发
Jan 11 Python
python找出完数的方法
Nov 12 Python
在python里协程使用同步锁Lock的实例
Feb 19 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
对Python中TKinter模块中的Label组件实例详解
Jun 14 Python
Python 字符串、列表、元组的截取与切片操作示例
Sep 17 Python
python 调试冷知识(小结)
Nov 11 Python
python实现银行实战系统
Feb 26 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
Python调用C/C++的方法解析
Aug 05 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数组函数
2008/08/18 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
js监听鼠标点击和键盘点击事件并自动跳转页面
2014/09/24 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
利用python画出AUC曲线的实例
2020/02/28 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
python使用建议与技巧分享(二)
2020/08/17 Python
Python 里最强的地图绘制神器
2021/03/01 Python
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
毕业生护理专业个人求职信范文
2014/01/04 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
小学教师师德师风承诺书
2015/04/28 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
Python WSGI 规范简介
2021/04/11 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL