python中一切皆对象是这个语言灵活的根本。
函数和类也是对象,属于python的一等公民。
包括代码包和模块也都是对象。
python的面向对象更加彻底。

可以赋值给一个变量
可以添加到集合对象中
可以作为参数传递给函数
可以当作函数的返回值

在python中什么不是对象?
字符串是类str的对象
数字是类int的对象
元组是类tuple的对象
列表是类list的对象
字典是类dict的对象
函数是类function的对象
类是type的对象

将一个函数当作返回值的时候就是闭包,也就是装饰器的实现原理。

在python中,基础的数据类型(list,tuple,dict等)都是使用c++编写的,所以性能会非常高。

一、type/object/class

1.type和class

>>> a = 1
>>> type(a)
<class 'int'>
>>> type(int)
<class 'type'> >>> b = ""
>>> type(b)
<class 'str'>
>>> type(str)
<class 'type'> >>> c = [1,2,3]
>>> type(c)
<class 'list'>
>>> type(list)
<class 'type'> >>> d = (1,2,3)
>>> type(d)
<class 'tuple'>
>>> type(tuple) <class 'type'>
>>> d = {"name":"kebi","age":18}
>>> type(d)
<class 'dict'>
>>> type(dict)
<class 'type'>

在python中基础数据类型有:字符串、数字、元组、列表、字典、集合等
它们分别由类str、int、tuple、list、dist、set实例出来的对象。
而类str、int、tuple、list、dist、set本身也是对象,它们都是由type这个创造创造出来的。

对于函数来说:
函数都是由类function创造出来的。

>>> def func():
... pass
...
>>> type(func)
<class 'function'>
>>> type(func())
<class 'NoneType'>
>>> type(function)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'function' is not defined

问题:
function这个类是怎么来的了?如果function是一个对象,那么为什么不能使用type打印类型。
原因也许是function超出了type的范围,因为它不是type创造的。类似的还有NoneType

对于类来说:
类都是由type创造出来

>>> class Person:
... pass
...
>>> type(Person)
<class 'type'>
>>> type(Person()) #对象由类创建
<class '__main__.Person'>

既然type创造了如此多的类,那么type是怎么来的?

>>> type(type)
<class 'type'> #自己创造自己

在python中,type有两个功能:
  a.打印对象的类型
     b.创造类

虽然上述代码并没有解释清楚一切对象的来源,但是很多的说明了type和class的关系——“type就是用来创造类的”

2.object

>>> print(int.__bases__)
(<class 'object'>,)
>>> print(str.__bases__)
(<class 'object'>,) >>> print(Person.__bases__) #默认继承object
(<class 'object'>,)
>>> class AnluPerson(Person):
... pass
...
>>> print(AnluPerson.__bases__)
(<class '__main__.Person'>,)
object是最顶层的基类。 >>> print(type.__bases__) #type的父类是object
(<class 'object'>,)
>>> type(object) #object又是由type创造出来的
<class 'type'>
>>> print(object.__bases__)
()
>>> type(type) #type自己创造自己
<class 'type'>

关于type、object、class之间的关系示意图:

在python中,基础数据类型的类都是type的实例,type自生也是type的实例。
基础数据类型的类都是继承object。
对于function等先不管,我们可以说一切皆对象,一切都是type的对象,object是所有类的基类。

二、python中常见的数据类型

1.None 全局只有一个

2.数值
• int
• float
• complex
• bool

3.迭代类型

4.序列类型
• list
• bytes、bytearray、memoryview(二进制序列)
• range
• tuple
• str
• array

5.映射(dict)

6.集合类型 dict与set实现原理相似,性能很高
• set
• frozenset

7.上下文管理类型(with)

8.其它
• 模块类型
• class和实例
• 函数类型
• 方法类型
• 代码类型
• object类型
• type类型
• ellipsis类型(省略号)
• notimplemented类型

最新文章

  1. UWP开发之控件:用WebView做聊天框
  2. jq倾斜的动画导航菜单
  3. C语言实现简单php自定义扩展
  4. DWZ错误的解决:0x800a13af - Microsoft JScript 运行时错误: 重新声明常量“document”
  5. 第一天 django
  6. Qt Style Sheet实践(三):QCheckBox和QRadioButton
  7. kindeditor粘贴word文档内容时去除格式的方法?如何设置为默认无文本格式呢?
  8. 低功耗蓝牙4.0BLE编程-nrf51822开发(6)-Battery Service
  9. leetcode 题解 Add Two Numbers(两个单链表求和)
  10. maven的安装,maven库配置和Eclipse插件的安装
  11. Google Map API v2 (四)----- 导航路径
  12. 阿里云服务器[教程3]一键安装php+mysql+ftp+nginx环境
  13. js简易猜数字
  14. Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC
  15. elment重置表格行高,hover效果
  16. java 网络编程 TCP协议 java 服务器和客户端 java socket编程
  17. 小程序https请求,http网站升到https
  18. zabbix参考文档
  19. 利用dom4j读写XML
  20. PHP学习 类型 变量 常数 运算符

热门文章

  1. [转帖]GNU, Free Software and Open Source 自由软件与开源软件
  2. CF1033C Permutation Game
  3. Linux组管理、用户管理、查看用户信息、usermod、which、切换用户、修改文件具体权限
  4. [洛谷P3966][TJOI2013]单词
  5. golang ---网卡信息
  6. JavaScript中数组的key-value在对象中倒装的妙用
  7. 5_PHP数组_3_数组处理函数及其应用_2_数组统计函数
  8. BUAA OO 2019 第三单元作业总结
  9. 北航OO课程完结总结
  10. JS权威指南读书笔记(七)