Bullet:Python的函数中参数是引用吗?
| Actually, call by object reference would be a better description, since if a mutable object is passed, the caller will see any changes the callee makes to it (items inserted into a list). |
[root@ansible01 python]# cat func.py
def func(a):
a = 2
return a b = 1 func(b) print b
[root@ansible01 python]# python func.py
1
[root@ansible01 python]# 其中b的值并未发生变化。
[root@ansible01 python]# pydoc id
Help on built-in function id in module __builtin__: id(...)
id(object) -> integer Return the identity of an object. This is guaranteed to be unique among
simultaneously existing objects. (Hint: it's the object's memory address.)
[root@ansible01 python]# cat func.py
def func(a):
print "argu a id = %d , before assignment." % id(a)
a = 2
print "argu a id = %d , after assignment." % id(a)
return a b = 1
print "Variable b id = %d , before calling function func." % id(b) func(b)
print "Variable b id = %d , after calling function func." % id(b)
[root@ansible01 python]# python func.py
Variable b id = , before calling function func.
argu a id = , before assignment.
argu a id = , after assignment.
Variable b id = , after calling function func.
[root@ansible01 python]#
[root@ansible01 python]# cat func_1.py
a=[1] def func(b):
b[0] = 2 func(a) print a[0]
[root@ansible01 python]# python func_1.py
2
可更改(mutable)与不可更改(immutable)对象
Bullet:Python的函数中参数是引用吗?的更多相关文章
- 多测师讲解python _函数中参数__高级讲师肖sir
函数中讲解参数: 形参和实参的认识 函数无参数的调用 函数单个参数的调用 函数多个参数的调用 # #调试函数给默认参数传新值,则函数使用新值 # 注意:当多种参数同时出现在函数中,默认参数要放在最后的 ...
- python类(class)中参数self的解释说明
python类(class)中参数self的简单解释 1.self只有在类的方法中才会有,其他函数或方法是不必带self的. 2.在调用时不必传入相应的参数.3.在类的方法中(如__init__),第 ...
- Python进阶-函数默认参数
Python进阶-函数默认参数 写在前面 如非特别说明,下文均基于Python3 一.默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 ...
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
- python函数中参数是如何传递的?
python中一切皆对象,函数中参数传递的是对象的引用. 1在函数中改变变量指向的对象,即指向不同对象. 当在函数中修改传递进来的变量指向另一个对象时,实参的对象不会改变. >>> ...
- python函数中参数的传递
Python唯一支持的参数传递方式是『共享传参』(call by sharing)多数面向对象语言都采用这一模式,包括Ruby.Smalltalk和Java(Java的引用类型是这样,基本类型按值传递 ...
- Python函数中参数类型
在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...
- Python在函数中使用列表作为默认参数
在学习中遇到的Python的一个坑,那就是使用列表作为默认参数. 我们知道,在Python中,列表(list)是可变对象,所以列表的内容可能会在函数内改变.另一个需要注意的是,使用列表作为函数的默认参 ...
- Python函数中参数* 和 ** 的区别
* 函数接收参数为元组 例如 def myfun(*args): #相当于 def myfun(1,2,3) ==> args 就相当于(1,2,3) for a in args: pri ...
随机推荐
- Lua 跟 C++ 的交互
Lua 和 C++ 是这样交互的 乱七八糟的前戏: 1. 到官网下载 Lua 文件 可參考 -> Lua 下载与配置 2. 设置环境 可參考 -> VS 配置Lua环境 交互过程 ...
- LeetCode 804. Unique Morse Code Words (唯一摩尔斯密码词)
题目标签:String 题目给了我们 对应每一个 字母的 morse 密码,让我们从words 中 找出 有几个不同的 morse code 组合. 然后只要遍历 words,把每一个word 转换成 ...
- nyoj448 寻找最大数
寻找最大数 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大. 比方当n=920813467185 ...
- web中servletcontext和applicationContext
参看:http://www.cnblogs.com/isisbenben/p/5594323.html servletContext和ApplicationContext有什么区别 servletCo ...
- Java代码规范_插件_阿里java开发手册
给大家分享一个阿里巴巴的java开发规范,在日常自动化工作中我们可以参考一下,特别是用java进行coding的同学. 而且还可以利用相应的插件进行代码扫描检测,感兴趣的们可以马上应用到自动化中来. ...
- ios13--购物车优化
// // ViewController.m // 03-综合练习 // #import "ViewController.h" @interface ViewController ...
- bzoj 5090 组题
题目大意: 一个数列,求一段长度不少于k的数 使平均值最大 思路: 把所有数列里的数,转换为(i,sum i)的点 然后求一个下凸包,在这个过程中对于长度特殊处理一下,使栈内至少有一段长度大于等于k ...
- HTTP协议下可拖动时间轴播放FLV的实现(伪流媒体)
HTTP协议下实现FLV的播放其实并不复杂,当初实现的原理是使用了flowPlayer插件实现的,效果还不错.但仍有两大问题影响着客户的访问情绪: 1.预加载时页面卡死,似乎没有边下边播. 2.偶尔边 ...
- bzoj4561
扫描线 想法挺妙 搞了很长很长时间... http://www.cppblog.com/superlong/archive/2010/08/06/122427.html #include<bit ...
- LuaBridge
不能直接公开基类的函数,必须单独公开基类,并声明继承关系 deriveClass<Player, BaseController>("Player") 直接公开基类的函 ...