一、python对象

1)所说所有的变量都是对象。 对象在python里,其实是一个指针,指向一个数据结构,数据结构里有属性,有方法。

对象通常就是指变量。从面向对象OO的概念来讲,对象是类的一个实例。在python里很简单,对象就是变量

class A:
myname="class a"
上面就是一个类。不是对象
a=A()
这里变量a就是一个对象。
它有一个属性(类属性),myname,你可以显示出来
print a.myname

所以,你看到一个变量后面跟点一个小数点。那么小数点后面就是它的属性或者是方法。带括号的方法。不带就是属性

2) python使用对象模型来存储数据。构造任何类型的值都是一个对象。

  所有python对象都拥有三个特性:身份、类型、值

    身份:每个对象都有一个唯一的身份标识自己,任何对象的身份可以使用内建函数 id() 来得到。

    类型:对象的类型决定了该对象可以保存什么类型的值,可以进行什么样的操作,以及遵循什么样的规则。可以使用 type() 函数查看python对象的类型。type()返回的是对象而不是简单的字符串。

    值:对象表示的数据。

1

2

3

4

5

6

7

8

>>> value = "abc"

>>> id(value)   #身份

39102784L

>>> type(value) #类型

<type 'str'>

>>> value  #值

'abc'

>>>

在python里,对象就是变量,对象其实是一个指针,指向一个数据结构,数据结构里有属性,有方法。

def now():
    print('2015-3-25')
f = now
print(f.__name__)
print(f.c)
变量后面跟一个小数点,小数点后面就是它的属性或方法,带括号的是方法,不带的就是属性。

python中,函数也是一个对象,而且函数对象可以被赋值给变量。

现在来看下python的@语法,或称为装饰器(decorator)

def log(func):#再定义一个函数,只是这个函数的返回值是一个函数,或者可以认为这个函数返回了一个指针,这个指针指向函数wrapper
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper
@log
def now():
    print('2015-3-25')
f = now()#call now():
        #2015-3-25

二、python类型

  (1).标准类型

    1.数字(分为几个字类型,其中三个是整型)

    2.Integer  整型

    3.Boolean  布尔型

    4.Long integer  长整型

    5.Floating point real number  浮点型

    6.Complex number 复数型

    7.String 字符串

    8.List 列表

    9.Tuple 元祖

    10.Dictionary 字典

  (2).其他内建类型

    类型、Null对象(None)、文件、集合/固定集合、函数/方法、模块、类

    通过type()函数可以查看对象的类型

1

2

3

4

5

6

7

8

9

>>> type(1)

<type 'int'>  #它是一个类型对象

>>> type("123")

<type 'str'>  #它是一个类型对象

>>> type([1,2,"3"])

<type 'list'>  #它是一个类型对象

>>> type((1,2,"3"))

<type 'tuple'>  #它是一个类型对象

>>>

    类型对象的类型是type,它是所有python类型的根和所有python标准类的默认元类

1

2

3

4

5

>>> type(type(1))

<type 'type'>

>>> type(type("123"))

<type 'type'>

>>>

  注意:所有标准对象均可用于布尔测试,同类型的对象之间可以比较大小。每个对象天生具有布尔True或False值。值为零的任何数字或者Null对象None的布尔值都是False。

  下列对象的布尔值是False:None、False、所有的值为零的数、0(整数)、0.0(浮点数)、0L(长整数)、0.0+0.0j(复数)、“”(空字符串)、[](空列表)、()(空元祖)、{}(空字典)。值不是上面列出来的任何值的对象的布尔值都是True。

三、对象的比较

  (1).对象值值的比较

贴代码

  (2).对象身份的比较(重点理解哦

    对象可以被赋值到另一个变量(通过引用)。因为每个变量都指向同一个(共享的)数据对象,只要任何一个引用发生改变,该对象的其他引用也会随之改变。

    例子1:foo1和foo2指向相同的对象

      foo1 = foo2 = 4.3

      这个语句的实际意思是一个值为4.3的数字对象被创建,然后这个对象的引用被赋值给foo1和foo2,结果就是foo1和foo2指向同一个对象

    例子2:foo1和foo2指向相同的对象

      foo1 = 4.3

      foo2 = foo1

      这个例子非常类似上一个,一个值为 4.3 的数值对象被创建,然后赋给一个变量,当执行 foo2 = foo1 时, foo2 被指向 foo1 所指向的同一个对象, 这是因为 Python 通过传递引用来 处理对象。foo2 就成为原始值 4.3 的一个新的引用。这样 foo1 和 foo2 就都指向了同一个对 象。示意图也上图一样。

    例子3:foo1和foo2指向不相同的对象

      foo1 = 4.3

      foo2 = 1.3 + 3

      这个例子有所不同。首先一个数字对象被创建,然后赋值给 foo1. 然后第二个数值对象被 创建并赋值给 foo2. 尽管两个对象保存的是同样大小的值,但事实上系统中保存的都是两个独立的对象,其中foo1是第一个对象的引用, foo2则是第二个对象的引用。如下图给我们这里有两个不同的对象,尽管这两个对象有同样大小的数值。我们为什么在示意图中使用盒子?没错,对象就象一个装着内容的盒子。当一个对象被赋值到一个变量,就象在这个盒子上贴了一个标签,表示创建了一个引用。每当这个对象有了一个新的引用,就会在盒子上新贴一张标签。当一个引用被销毁时,这个标签就会被撕掉。当所有的标签都被撕掉时,这个盒子就会被回收。

    那么,Python 是怎么知道这个盒子有多少个标签呢?每个对象都天生具有一个计数器,记录它自己的引用次数。这个数目表示有多少个变量指向该对象。他就是上一节提到的引用计数器。

    提供了is和is not运算符来测试两个变量是否指向同一个对象。

1

2

3

4

5

6

7

8

9

10

11

>>> a = "123"

>>> id(a)

48523104L

>>> b = "123"

>>> id(b)

48523104L

>>> a is b

True

>>> id(a) == id(b)

True

>>>

四、工厂函数

  他们看上去像函数,但实际上他们是类。当你调用它们时,实际上是生成了该类型的一个实例。

  他们包含:int()、long()、float()、complex()、str()、unicode()、basestring()、list()、tuple()、type()、dict()、bool()、set()、frozenset()、object()、classmethod()、staticmethod()、super()、property()、file()

五、类型的分类

  按存储模型

    1.标量/原子类型(数值,字符串)

    2.容器类型(列表、元祖、字典)

  按更新模型(重点看看哦)

    1.可变类型(列表、字典)

      所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

>>> aList = ['java',66,88,'python']

>>> aList

['java'6688'python']

>>> aList[2]

88

>>> id(aList)  #注意观察id值

48255112L

>>> aList[2= aList[2+ 12

>>> aList[3= "python2"

>>> aList

['java'66100'python2']

>>> id(aList)

48255112L  #注意观察id值

>>>

    2.不可变类型(数字、字符串、元祖)

    注意喽:下面的例子中,事实上是一个新对象被创建,然后它取代了旧对象。新创建的对象被关联到原来的变量名,旧对象被丢弃,垃圾回收器会在适当的时机回收这些对象。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

>>> v1 = "python"

>>> id(v1)

31631080L

>>> v1 = "java"

>>> id(v1)

31632240L  #由于str是不可变的,重新创建了java对象,随之id改变,旧对象python会在某个时刻被回收

>>>

>>> v2 = 12

>>> v3 = 12

>>> id(v2),id(v3)  #同指同一内存区域,id相同

(31489840L31489840L)

>>> v2 += 1

>>> v2

13

>>> id(v2),id(v3)

(31489816L31489840L)

>>>

  按访问模型

    1.直接访问(数字)

    2.顺序访问(字符串、列表、元祖)

    3.映射访问(字典)

python对象介绍相关推荐

  1. Blender中的Python脚本介绍学习教程

    Blender中的Python脚本介绍学习教程 MP4 |视频:h264,1280×720 |音频:AAC,48000 Hz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:1.63 ...

  2. python numpy 数据类型为python对象-python numPy模块 与numpy里的数据类型、数据类型对象dtype...

    学习链接:http://www.runoob.com/numpy/numpy-tutorial.html 简介: numPy是python语言的一个扩展库,是一个运行非常快的数学库,主要用于数组计算. ...

  3. Python pickle模块:实现Python对象的持久化存储

    Python 中有个序列化过程叫作 pickle,它能够实现任意对象与文本之间的相互转化,也可以实现任意对象与二进制之间的相互转化.也就是说,pickle 可以实现 Python 对象的存储及恢复. ...

  4. 独家|测量、建议、快速上手!你所使用的Python对象占用了多少内存?(附代码)...

    作者:Gigi Sayfan 翻译:吴振东 校对:吴金笛 本文约3300字,建议阅读10分钟. 本文将介绍多种Python对象分别所占用的内存,并解释所选择的测量方法和函数,为节省内存提供建议. Py ...

  5. python语言简介-Python语言介绍

    原标题:Python语言介绍 Python简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其 ...

  6. python语言介绍-00-python语言介绍

    以下为摘录的python的介绍 Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译.其他解释型语言还包括PHP和Ruby. Python是动态类型 ...

  7. python判断文件是否为空文件对象_判断Python对象是不是为文件对象的方法有哪些...

    判断Python对象是不是为文件对象的方法有哪些 发布时间:2020-08-13 14:01:00 来源:亿速云 阅读:76 作者:小新 这篇文章主要介绍判断Python对象是不是为文件对象的方法有哪 ...

  8. Python的介绍与安装

    2019独角兽企业重金招聘Python工程师标准>>> 1.Python的介绍 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具 ...

  9. Python对象类型

    Python对象类型 Python进阶(二)--Python对象类型 上一章中我们主要讲了Python的安装与Python基本命令行,IDLE的应用.本章中我们将讲述Python的对象类型,包括数字. ...

最新文章

  1. SpringCloud 2020版本教程1:使用nacos作为注册中心和配置中心
  2. 第六周项目三-IP地址类
  3. Qt控制台输出QString
  4. 在华为云服务器的Linux系统中搭建开发环境
  5. vuepress侧边栏配置_vuepress的侧边栏怎么动态生成
  6. 最大公约数+最小公倍数
  7. 【Java3】封装,对象数组,构造器,this/super/继承,抽象
  8. [XSY4170] 妹子(线段树上二分)
  9. IntelliJ IDEA for Windows 默认模式下的快捷键
  10. tcp/ip四层和osi七层
  11. 共阴极数码管编码表_数码管循环点亮的PLC控制——基本逻辑指令的应用
  12. Sequelize Model
  13. 就数据平台建设,80%的500强企业都有一个共性
  14. 【转】wget 使用技巧
  15. 前端页面点击姓名查看详情
  16. Hadoop 中的面试题
  17. ajax里的append,使用AJAX源和appendTo理解和实现jQuery自动完成
  18. 三星电视:科技创新塑造美好生活,绿色行动守护地球明天
  19. 高中数学基础05:排列、组合以及隔板法
  20. 艾略特波段理论(转载)

热门文章

  1. 福禄克Fluke DSX-8000 CableAnalyzer线缆分析仪介绍
  2. 【Java】实现聊天程序(完整版)
  3. 安装usb摄像头驱动引起VMwareWorkstation9虚拟机无法正常打开
  4. 十款绝bi好用的硬盘数据恢复软件值得拥有简易恢复
  5. java filewriter_Java IO: FileReader和FileWriter
  6. 基于JAVA医院管理系统计算机毕业设计源码+系统+lw文档+部署(2)
  7. Go语言web开发入门
  8. LibGDX_1.1: LibGDX 跨平台游戏开发框架简介
  9. mysql完整导出身份证
  10. CSS中的EM属性之弹性布局