一、基本原理

Python中一切都是对象,变量是对象的引用。

这是一个普遍的法则。我们举个样例来说。Python是怎样来处理的。

x = 'blue'
y = 'green'
z = x

当python运行上面第一句的时候,会在heap中首先创建一个str对象,其文本内容为blue。同一时候还创建一个名为x的对象引用。x引用的就是这个str对象。

第二句也是类似;第三条创建了一个名为z的新对象引用。并将其设置为对象引用x所指向的同样对象。例如以下图的变化。

所以看出在Python中赋值操作符号“=”的作用是,将对象引用和内存中的某个对象进行绑定。假设对象已经存在,就进行简单的又一次绑定。以便引用“=”右边的对象;假设对象引用尚未存在。就首先创建对象,然后将对象引用和对象进行绑定。



Python使用“动态类型”机制,也就是说,在Python程序中。不论什么时候能够依据须要,某个对象引用都能够又一次绑定到还有一个不同的对象上(不要求是同样的类型)。这和其它强化型语言如(C++,Java)不太一样,仅仅同意又一次绑定同样类型的对象上。

在Python中,由于有“动态类型”机制,所以一个对象引用能够运行不同类型的对象适用的方法。当一个对象不存在不论什么对象引用的时候。就进入了垃圾收集的过程。

查看类型程序:

import types
type(100)
>>> a=100
>>> a/10
10
>>> a[0] Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
a[0]
TypeError: 'int' object has no attribute '__getitem__'
>>> a='hello'
>>> a[0]
'h'
>>> a/10 Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
a/10
TypeError: unsupported operand type(s) for /: 'str' and 'int'
>>>

第一句 a = 100 

Python会在heap创建一个int对象。其内容为100。同一时候创建a变量,其值指向heap中的int对象



第二句 a/10

Python适用“动态类型”机制,推断a指向的对象是int型,能够适用/(除法)操作。

于是便进行运算产生结果。

(它会在heap中在创建一个10.0的对象么?





第三句 a[0]

Python适用“动态类型”机制,推断a指向的对象是int型,并不适用[](分片)操作。于是就进行报错。



第四句 a = 'hello'

Python会在heap创建一个str对象。其内容为hello。同一时候改变a变量,使得其值指向heap中的str对象。同一时候原来的int对象。因为不在存在对象引用。所以就进入了垃圾收集过程。



第五句 a[0]

Python适用“动态类型”机制,推断a指向的对象是str型。能够适用[](分片)操作。于是便进行运算产生结果。

第六句 a/10

Python适用“动态类型”机制,推断a指向的对象是str型,并不适用/(除法)操作。于是就进行报错。

总之 :在Python中一切都是对象,变量总是存放对象引用。当一个对象没有变量指向它的时候,它便进入了垃圾收集过程。Python的“动态类型”机制,负责检查变量的对象引用适用操作。

假设该对象不适用该操作。则会直接报错。一句话”变量无类型。对象有类型 “

二、python的id()。==,is的区别

1. id():获取的是对象在内存中的地址

2. is :比对2个变量的对象引用(对象在内存中的地址。即id() 获得的值)是否同样。假设同样则返回True。否则返回False。

换句话说,就是比对2个变量的对象引用是否指向同一个对象。

3. ==:比对2个变量指向的对象的内容是否同样。

一入python深似海--变量和对象的更多相关文章

  1. 一入python深似海--浅拷贝与深拷贝

    python中有一个模块copy,deepcopy函数用于深拷贝,copy函数用于浅拷贝. 要理解浅拷贝,必须先弄清楚python中的引用. 引用 Python中一切都是对象,变量中存放的是对象的引用 ...

  2. 一入python深似海--dict(字典)的一种实现

    以下是python中字典的一种实现.用list数据结构实现字典.详细是这种:[[(key1,value1),(key2,value2),...],[],[],...] 内部每个hash地址是一个lis ...

  3. 一入python深似海--class

    python class 分为三个部分:class and object(类与对象),inheritance(继承),overload(重载)and override(覆写). class and o ...

  4. 一入python深似海--range()、list与for

    range使用方法 使用python的人都知道range()函数非常方便,今天再用到他的时候发现了非常多曾经看到过可是忘记的细节. 这里记录一下: range(1,5)#代表从1到5(不包括5) [1 ...

  5. 一入python深似海--python之道

    python社区不乏幽默.先来看"python之道"这首诗. 导入this包: import this 输出是一首诗,这首诗总结了Python的风格,能够指导Python程序猿的编 ...

  6. 一入python深似海--对象的属性

    Python中一切皆是对象,每一个对象都能够有多个属性.Python是怎样管理这些属性呢?我们来探讨一下. 属性的__dict__系统 对象的属性包括两部分:类属性和对象属性.对象的属性可能来自于其类 ...

  7. 一入Python深似海--print

    先给大家来个干货^~^,学习Python的一个好站点,http://learnpythonthehardway.org/book/ 经典样例 以下是几个老经典的样例喽,刚接触Python的能够敲一敲, ...

  8. 「一入 Java 深似海 」系列课程

    第一期 「一入 Java 深似海 」系列课程 - 第一期 第一节:Java 语言基础

  9. 一入Java深似海

    Java的基础语法 一个java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来写协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象: 对象是一个类的实例,有状态和行为.例如 ...

随机推荐

  1. 3、jQuery的DOM基础

    DOM模型在页面文档中,通过树状模型展示页面的元素和内容,其展示的方式则是通过节点(node)来实现的. 3.1 访问元素 3.1.1 元素属性操作 Attr()可以对元素属性执行获取和设置操作,而r ...

  2. CentOS7关闭默认防火墙启用iptables防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤. 1.关闭firewall: systemctl stop firewalld.service #停止f ...

  3. android 屏幕适配原则

    屏幕大小 1.不同的layout Android手 机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的 ...

  4. Wpf 自定义控件(1)

    1. 新建一个wpf工程,在工程下面新建   一个文件夹themes,在themes下新建两个资源字典文件generic.xaml和PrettySeekBar.xaml generic.xaml   ...

  5. [k8s]简单启动一个k8s集群

    简单启动一个k8s集群 kube-master mkdir -p /root/logs/api-audit /root/logs/controller /root/logs/scheduler kub ...

  6. 第一个EJB示例

    FirstEJB2.0.zip Eclipse + JBoss 5.1 Ejb3Example.zip Eclipse + JBoss 7.1 注意点: 1. jboss 增加用户: D:\DevPr ...

  7. C#元祖Tuple的事例

    数组合并了同样类型的对象.而元祖合并了不同类型的对象.元祖起源于函数编程语言(F#) NET Framework定义了8个泛型Tuple(自NET4.0)和一个静态的Tuple类,他们作用元祖的工厂, ...

  8. ajax请求的data数据格式

    ajax提交data类型 一.问题来源 今天使用ajax时,发现get传data时,传递json字符串时传不过去参数,所以做了一些实验测试ajax的get和post的传递data时的不同. 二.概念 ...

  9. java中的锁池和等待池

    在java中,每个对象都有两个池,锁(monitor)池和等待池 wait() ,notifyAll(),notify() 三个方法都是Object类中的方法. 锁池:假设线程A已经拥有了某个对象(注 ...

  10. 您的位置:首页 » IOS » iOS中全局悬浮按钮,类似IPhone中的AssistiveTouch iOS中全局悬浮按钮,类似IPhone中的AssistiveTouch

    原文地址:http://blog.5ibc.net/p/86562.html 前提:当时看到别人写过这个类似AssistiveTouch的demo,但是有问题,第一改变不了位置.第二切换页面后无法使用 ...