Python什么是值或引用函数参数
这篇文章是Python前往遇到有疑问的功能。
下面一段是原有的基础教程Python函数。
按值传递參数和按引用传递參数
全部參数(自变量)在Python里都是按引用传递。假设你在函数里改动了參数,那么在调用这个函数的函数里,原始的參数也被改变了。比如:
#!/usr/bin/python # 可写函数说明
def changeme( mylist ):
"改动传入的列表"
mylist.append([1,2,3,4]);
print "函数内取值: ", mylist
return # 调用changeme函数
mylist = [10,20,30];
changeme( mylist );
print "函数外取值: ", mylist
传入函数的和在末尾加入新内容的对象用的是同一个引用。故输出结果例如以下:
函数内取值: [10, 20, 30, [1, 2, 3, 4]]
函数外取值: [10, 20, 30, [1, 2, 3, 4]]
好。看到这里。自己亲手測试一下,代码:
def printme(age,str):
str = 'str changed!'
print age,str
return str = 'ori str'
age = 23
printme(age,str)
print str
输出结果:
23 str changed!
ori str
好像哪里不正确啊!不是说函数内部改动了參数的值,那么实际參数也会变吗?!
难道它对字符串和列表等还不是同等对待?
有经验的人都知道,在python中,strings, tuples, 和numbers是不可更改的对象,而list,dict等则是能够改动的对象。
那么,就记住红色文字的这句话吧,你想改动不可更改的对象时。事实上就开辟了一个新新对象的存储空间,这就是为什么有问题的全球范围和局部范围。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Python什么是值或引用函数参数的更多相关文章
- Python小白学习之路(十)—【函数】【函数返回值】【函数参数】
		
写在前面: 昨天早睡之后,感觉今天已经恢复了百分之八十的样子 又是活力满满的小伙郭 今日份鸡汤: 我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活.-------宫崎 ...
 - pycahrm使用docstrings来指定变量类型、返回值类型、函数参数类型
		
py里面不需要显示声明类型,这和java c这些静态语言不同,虽然python这样做少了一些代码和写代码的困难度,但还是非常多的弊端的,运行速度 代码安全, 这些都是语言本身带来的本的弊端,这些没办法 ...
 - Python学习札记(十二) Function3 函数参数一
		
参考:函数参数 Note 1.Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以 ...
 - python基础之全局局部变量及函数参数
		
1.局部变量和全局变量 1.1局部变量 局部变量是在函数内部定义的变量,只能在定义函数的内部使用 函数执行结束后,函数内部的局部变量会被系统收回 不同函数可以定义相同名字的局部变量,但是各用个的互不影 ...
 - C++ enable_if 模板特化实例(函数返回值特化、函数参数特化、模板参数特化、模板重载)
		
1. enable_if 原理 关于 enable_if 原理这里就不细说了,网上有很多,可以参考如下教程,这里只讲解用法实例,涵盖常规使用全部方法. 文章1 文章2 文章3 1. 所需头文件 #in ...
 - python学习二十四天函数参数之默认参数
		
函数参数就是向函数传递参数,可以传递一个,可以是更多个,有的参数有值,有的没有,函数可以设置默认参数,默认参数必须放参数最后面. 1,不传递参数,设置默认参数 def hello(a,b,c='123 ...
 - python基础(三元运算+深浅拷贝+函数参数)
		
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...
 - python基础学习(二)--函数
		
return返回值: python函数都有返回值,函数体内无return,默认返回值None, 函数参数: 1.普通参数 严格按照顺序,将实际参数赋值给形式参数,一一对应. 例: def send(x ...
 - Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值      函数递归调用   匿名函数   内置函数
		
Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数 目录 Pycharm使用技巧(转载) Python第一天 ...
 
随机推荐
- JDK自带的监控分析工具JConsole
			
非常多开发人员认为自己懂Java编程.事实是大多数开发人员都仅仅领会到了Java平台的皮毛.所学也仅仅够应付工作. 作者将深度挖掘Java平台的核心功能.揭示一些鲜为人知的事实.帮助您解决最棘手的编程 ...
 - wxWidgets+wxSmith版电子词典
			
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目3-OOP版电子词典](本程序须要的相关 ...
 - lua三底漆:lua转让c/c++库(动态链接模式)
			
dll按功能luaL_openlib出口,然后lua使用package.loadlib导入库函数,基本就是这么个过程,以下上代码来说明一切. #include "stdafx.h" ...
 - python使用smtplib库和smtp.qq.com邮件服务器发送邮件(转)
			
使用qq的邮件服务器需要注意的两个地方主要是: 1.协议问题 使用465端口 SSL 协议 2.口令问题 出现SMTPAuthenticationError 主要的原因就是口令和帐号信息不对,这里我们 ...
 - cocos2dx 子弹飞作为一个例子来解释解酒效果类CCMotionStreak
			
感谢点评与关注,欢迎转载与分享. 勤奋努力,持之以恒! 在游戏开发中,有时会须要在某个游戏对象上的运动轨迹上实现渐隐效果.比方子弹的运动轨迹,假设不借助引擎的帮助.这样的效果则须要通过大量的图片来实现 ...
 - ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案
			
原文:ssis package 在调试状态中设置断点,程序 不进入断点 的解决方案 针对 SSIS intergation 项目 > 属性 > Debug >Run64bITRunt ...
 - 设计模式(Facade)状态(注意事项)
			
外观模式(Facade),子系统的一组接口提供一个一致的界面,该模式定义了一个高层次接口,这个接口使得这一子系统更加easy采用. 外观模式完美地体现了依赖反转原则,迪米特法则的想法,式之中的一个. ...
 - malloc实现原理
			
记得早一段时间,看到一本书上写过delete的一个..今天突然找啦一下资料: malloc()是C语言中动态存储管理 的一组标准库函数之中的一个.其作用是在内存的动态存储区中分配一个长度为size的连 ...
 - 【日报C在23】堆和栈的深入了解
			
每日一C之堆与栈的深入理解 每天拾一个C语言贝壳,厚积薄发,积跬步以致千里. 今日贝壳:内存中堆与栈的深入理解.认识一个清晰地内存 假 ...
 - react.js 从零开始(七)React (虚拟)DOM
			
React 元素 React 中最主要的类型就是 ReactElement.它有四个属性:type,props,key 和ref.它没有方法,并且原型上什么都没有. 可以通过 React.create ...