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常用知识梳理(必看篇)
Mar 23 Python
Python解析命令行读取参数--argparse模块使用方法
Jan 23 Python
PyQt5每天必学之切换按钮
Aug 20 Python
Python实现的银行系统模拟程序完整案例
Apr 12 Python
24式加速你的Python(小结)
Jun 13 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
numpy矩阵数值太多不能全部显示的解决
May 14 Python
python 爬取B站原视频的实例代码
Sep 09 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 Python
Python实现随机生成迷宫并自动寻路
Jun 13 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运行时强制显示出错信息的代码
2011/04/20 PHP
input file获得文件根目录简单实现
2013/04/26 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
PHP基于DOM创建xml文档的方法示例
2017/02/08 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
2017/08/17 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
jquery JSON的解析方式
2009/07/25 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
Javascript冒泡排序算法详解
2014/12/03 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
jQuery中.attr()和.data()的区别分析
2017/09/03 jQuery
vue实现简单loading进度条
2018/06/06 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
如何基于pythonnet调用halcon脚本
2020/01/20 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
python else语句在循环中的运用详解
2020/07/06 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
HTML5中的nav标签学习笔记
2016/06/24 HTML / CSS
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
英国国家美术馆商店:National Gallery
2019/05/01 全球购物
super()与this()的区别
2016/01/17 面试题
房地产销售员的自我评价分享
2013/12/04 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
2014年班组工作总结
2014/11/20 职场文书
离婚起诉状范本
2015/05/19 职场文书
nginx 配置缓存
2022/05/11 Servers