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文件和目录操作详解
Feb 08 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
Python爬虫之UserAgent的使用实例
Feb 21 Python
Python XlsxWriter模块Chart类用法实例分析
Mar 11 Python
Django框架使用mysql视图操作示例
May 15 Python
python利用多种方式来统计词频(单词个数)
May 27 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
基于PyTorch的permute和reshape/view的区别介绍
Jun 18 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 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数字格式化
2006/12/06 PHP
PHP 函数语法介绍一
2009/06/14 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
php计算整个目录大小的方法
2015/06/19 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
jQuery的学习步骤
2011/02/23 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(一)
2016/02/16 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
Python2/3中urllib库的一些常见用法
2017/12/19 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
浅谈Python_Openpyxl使用(最全总结)
2019/09/05 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
python pandas利用fillna方法实现部分自动填充功能
2020/03/16 Python
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
捐献物资倡议书范文
2014/05/19 职场文书
大学生党校培训心得体会
2014/09/11 职场文书