纯粹的python绑定
目前很多学习资料这样解释赋值与绑定,当是一个简单变量时,是赋值,当是复合变量时,是绑定。
注:赋值是重新复制变量到新变量中,赋值前后两个变量之间无联系。例C语言中:
int a=6;
int b;
b =a;
此时b和a是两个毫不相干的变量,改变b的值不影响a;
绑定只是将一个变量绑定到一个新的名称,例如C++语言中的
int a=6;
int &b=a;(此处&表示引用)
此时b就是a的一个别名,当改变b的值时,a的值会随之改变;
在python具有以下特性
1)对于简单变量:
>>> a=7
>>> b=a
>>> b=6
>>> b
6
>>> a
7
对于复合变量
>>> c=[1,2]
>>> d=c
>>> d[1]=7
>>> d
[1, 7]
>>> c
[1, 7]
故有些人依次认为简单变量是赋值,即b的改变不影响a,两个变量之间相互独立;而复合变量则是绑定,d的改变影响了c,两者都是指向同一变量,是同一变量的不同名称而已。
但python是一门很纯粹的语言,如此理解是非常不对的。
请看:

>>> a=7
>>> b=a
>>> id(a)
31892112
>>> id(b)
31892112
>>> b=4
>>> id(b)
31892148
所以当运行b=4时,此时是因为b这个名称重新绑定到变量4上了,指向了另一个变量,而a依旧指向之前的变量,所以两者之间互不相同。
由此可见,python之中只有绑定,不管是简单变量还是复合变量。

纯粹的python绑定的更多相关文章
- Python绑定方法,未绑定方法,类方法,实例方法,静态方法
>>> class foo(): clssvar=[1,2] def __init__(self): self.instance=[1,2,3] def hehe(self): pr ...
- Python绑定方法与非绑定方法
绑定方法 绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 绑定到类的方法:用classmethod装饰器装饰的方法,类在使用时会将类本身当做参数传给类方法的第一个参数(即便是对象来调 ...
- python绑定调用和非绑定调用
绑定调用和非绑定调用 在python中,绑定调用和非绑定调用其实是相对于类和实例来说的.抽象点说就是:在类实例化过程中,类的方法会绑定在实例之中,此时,这个实例会拥有这个类的具体属性和方法,这些属性和 ...
- 为sproto添加python绑定
项目地址:https://github.com/spin6lock/python-sproto 第一次写Python的C扩展,留点笔记记录一下.主要的参考文档是:Extending Python wi ...
- python 绑定方法
一.绑定方法与非绑定方法 1.绑定方法''' 绑定方法:绑定给谁就是给谁用的 1.凡是类中的方法和函数,都是绑定给对象使用的: 2.绑定方法都有自动传值的功能.传递进去的值,就是对象本身. 3.如果类 ...
- Python 绑定 C,C++ 参考工具介绍
https://wiki.python.org/moin/IntegratingPythonWithOtherLanguages 完.
- Python 绑定方法与非绑定方法
用到的: import uuid -------------- uuid是128位的全局唯一标识符, 通常用32位的一个字符串的形式来表现 uuid.uuid1() ------------- ...
- (转)Python学习笔记系列——Python是一种纯粹的语言
此文出自知乎灵剑,原文传送门:https://zhuanlan.zhihu.com/p/23926957. 在摸索适合自己的语言学习方法,看到一篇好文章,转之,侵删. Python的语法范式相当多.知 ...
- 【译】Python Lex Yacc手册
本文是PLY (Python Lex-Yacc)的中文翻译版.转载请注明出处.这里有更好的阅读体验. 如果你从事编译器或解析器的开发工作,你可能对lex和yacc不会陌生,PLY是David Beaz ...
随机推荐
- vue2.0配置路由
配置路由之前,先检查vue版本,(案例适用vue2.0) 采用npm包的形式进行安装. 安装路由依赖:npm install vue-router(代码中,如果在一个模块化工程中使用它,必须要通过 V ...
- vue-cli中怎么样使用less
1.安装安装less依赖,npm install less less-loader --save 2.修改配置文件, 在build/webpack.base.conf.js文件的module.expo ...
- IntelliJ IDEA2018.3 最新破解方法
IntelliJ IDEA2018.3 最新破解方法 输入 http://idea.java.sx/ 即可,亲测可用.如果资金允许还是希望大家能支持正版,尊重原创 ------------- ...
- sql server中如何修改视图中的数据?
sql server中如何修改视图中的数据? 我做个测试,视图的数据有标记字段时,如果是这种方式(0 as FlagState),是无法修改的 --创建视图语句 --- create view V_E ...
- nginx之location的匹配规则
nginx之location的匹配规则 一.语法规则 location [=|~|~*|^~] /uri/ { - } 符号 含义 = 开头表示精确匹配 ^~ 开头表示 uri 以某个常规字符串开头 ...
- Java Spring 在线程中或其他位置获取 ApplicationContext 或 ServiceBean
部分一转载自:http://blog.csdn.net/yang123111/article/details/32099329 via @yang123111 部分二转载自:http://www.cn ...
- nopcommerce 4.1 core 插件 相关1
nop中 插件机制是比较值得学习的: Nop 插件学习: 1. 项目里面的生成必须是采用 直接编辑项目文件,参考nop原本的项目文件 动态加载插件的方法-mvc3 参考: using System.L ...
- python字符串编码理解(转载)
(转载)字符编码和python使用encode,decode转换utf-8, gbk, gb2312 (http://www.cnblogs.com/jxzheng/p/5186490.html) A ...
- springboot整合ueditor 前后端分离
1.下载ueditor,百度搜索ueditor,下载 前端用的是Jsp版,导入文件如下 由于要修改部分源码,所以后端用的源码版,导入文件如下 2.配置路径,用来找到json文件 配置前端ueditor ...
- 第九周学习笔记-ADO.Net中DataSet的应用
一.知识点描述 1.含义:DataSet是ADO.Net的断开式结构的核心组件,它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据.DataSet包含一个或多个DataTable ...