python之name binding
[python之name binding]
1. 名字
名字是对一个对象的称呼,一个对象可以只有一个名字,也可以没有名字或取多个名字。但对象自己却不知道有多少名字,叫什么,只有名字本身知道它所指向的是个什么对象。给对象取一个名字的操作叫作命名,python将赋值语句认为是一个命名操作(或者称为名字绑定)。
名字在一定的名字空间内有效,而且唯一,不可能在同一个名字空间内有两个或更多的对象取同一名字。
让我们再来看看本篇的第一个例子:i = 1。在python中,它有如下两个含义:
* 创建一个值为1的整型对象
* "i"是指向该整型对象的名字(而且它是一个引用)
2. 绑定
如上所讲的,绑定就是将一个对象与一个名字联系起来。更确切地讲,就是增加该对象的引用计数。众所周知,C++中一大问题就是内存泄漏 -- 即动态分配的内存没有能够回收,而解决这一问题的利器之一就是引用计数。python就采用了这一技术实现其垃圾回收机制。
python中的所有对象都有引用计数。
i=i+1
* 这创建了一个新的对象,其值为i+1。
* "i"这个名字指向了该新建的对象,该对象的引用计数加一,而"i"以前所指向的老对象的
引用计数减一。
* "i"所指向的老对象的值并没有改变。
* 这就是为什么在python中没有++、--这样的单目运算符的一个原因。
python之name binding的更多相关文章
- uvloop —— 超级快的 Python 异步网络框架
简短介绍 asyncio是遵循Python标准库的一个异步 I/O框架.在这篇文章里,我将介绍 uvloop: 可以完整替代asyncio事件循环.uvloop是用Cython写的,基于 libuv. ...
- Python闭包相关问题
闭包的概念一直是似懂非懂,看过了原理,却不知道怎么实际应用. 刚好看到Python的late binding问题,记录如下,以备后续增补. >>> def create_multip ...
- 2015/9/21 Python基础(17):绑定和方法调用
绑定和方法调用现在我们需要再次阐述Python中绑定(binding)的概念,它主要与方法调用相关联.方法是类内部定义的函数,这意味着方法是类属性而不是实例属性.其次,方法只有在其所属的类拥有实例时, ...
- 所有的GUI Toolkit,类型之多真开眼界
The GUI Toolkit, Framework Page User interfaces occupy an important part of software development. Th ...
- C++ 100款开源界面库 (10)
(声明:Alberl以后说到开源库,一般都是指著名的.或者不著名但维护至少3年以上的.那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码.这里并不是贬低,像Alberl前面那个系列的 ...
- what is yaml ?
what is yaml ? when I fist time meeting it is in java projects she as a system config file to my e ...
- 仿迅雷播放器教程 -- C++ 100款开源界面库 (10)
(声明:Alberl以后说到开源库,一般都是指著名的.或者不著名但维护至少3年以上的.那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码.这里并不是贬低,像Alberl前面那个系 ...
- LIST OF NOSQL DATABASES [currently 150]
http://nosql-database.org Core NoSQL Systems: [Mostly originated out of a Web 2.0 need] Wide Column ...
- 小而美的ghost driver
做过selenium自动化项目的同学应该都遇到过这样的问题:测试用例太多,运行速度过慢导致团队成员怨声载道. 于是便有了selenium grid和多线程运行selenium测试用例的方法.这些方法各 ...
随机推荐
- 如何导入数据到Mysql
有两种方法: 1.如果是.sql后缀的数据库文件,使用phpmyadmin中的导入功能导入即可,导入前需要新建数据库名. 2.如果导入的是文件夹(内含.frm,.myd,.myi,.opt类型文件), ...
- BZOJ4917: [Lydsy1706月赛]Hash Killer IV(模拟)
4917: [Lydsy1706月赛]Hash Killer IV Time Limit: 1 Sec Memory Limit: 256 MBSubmit: 327 Solved: 140[Su ...
- B树、B-树、B+树、B*树都是什么
B树.B-树.B+树.B*树都是什么 B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右 ...
- springboot读取配置文件的顺序
前言 今天测试一些东西,发现配置文件连接的数据库一直不正常,数据也不对,今天请教了之后,原来springboot的配置文件加载不仅仅是项目内的配置文件. 正文 项目目录是这样的:文件夹下有:项目,ap ...
- Js 图片轮播渐隐效果
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Windows同时安装python3和python2
Windows同时安装python3和python2 https://www.cnblogs.com/shanhua-fu/p/6912683.html Windows7 下python3和pytho ...
- CentOS下用yum配置php+mysql+apache
环境: CentOS5.4 yum 想在一台CentOS的机器上安装配置支持dedeCMS的php+mysql+apache环境,把摸索的过程记录如下: 1. 安装Apahce, PHP, Mysq ...
- 代码规范 for node.js with 'npm-coding-style'
npm-coding-style npm's "funny" coding style Description npm's coding style is a bit unconv ...
- Run-time Settings 运行时设置
1.执行顺序设置和执行概率设置 2.迭代之间的等待时间设置 3.日志设置 4.思考时间 5.杂项 线程进程选择: 一般服务器没有安全机制选择线程执行 但是有安全机制的话 比如第一个进程50个线程 第二 ...
- 利用spring的ApplicationListener监听某一类事件的发生
1.ApplicationListener在使用过程中可以监听某一事件的发生,可以做出相应的处理,这个方式不常用,但是在特殊情况下面还是有用的. 2.导包pom.xml <project xml ...