第二章python中的一切皆对象
1.函数和类也是对象,属于python的一等公民
赋值给一个变量
可以添加到集合对象之中
可以作为参数传递给函数
可以当作函数的返回值
def ask(name="ask_wzh"):
print(name) class Person:
def __init__(self):
print("Person_wzh") # 函数赋值给变量
my_fun = ask
my_fun("王智豪") # 王智豪 # 类赋值给变量
my_class = Person
my_class() # Person_wzh # 添加到集合对象之中
obj_list = []
obj_list.append(ask)
obj_list.append(Person) for item in obj_list:
print(item()) # ask_wzh,None,Person_wzh,<__main__.Person object at 0x033DC4C0> # 作为参数和返回值
def decorator_func(fun):
print("dec start")
return fun dec_func = decorator_func(ask) # dec start
dec_func() # ask_wzh
2.type、object和class的关系
- 所有类的类型都是type
- 所有类的最上层基类是object类
- type也是一个类,同时type也是一个对象
# -*- coding: utf-8 -*-
__author__ = 'bobby'
a = 1
b = "abc"
print(type(1)) # <class 'int'>
print(type(int)) # <class 'type'>
print(type(b)) # <class 'str'>
print(type(str)) # <class 'type'> class Student:
pass stu = Student()
print(type(stu)) # <class '__main__.Student'>
print(type(Student)) # <class 'type'>
print(int.__bases__) # (<class 'object'>,)
print(str.__bases__) # (<class 'object'>,)
print(Student.__bases__) # (<class 'object'>,)
print(type.__bases__) # (<class 'object'>,)
print(object.__bases__) # ()
print(type(object)) # <class 'type'>
print(type(type)) # <class 'type'> # 所有类的类型(包括type类)都是type
# 所有类的最上层基类是object类
# type也是一个类,同时type也是一个对象

3.python中常见内置类型
- 对象的三个特征
- 身份:内存地址
- 类型
- 值
- None类型:全局只有一个
- 数值类型:int,float,complex(复数),bool
- 迭代器类型:之后讲解
- 序列类型:之后讲解
- list
- bytes,tyearray,memoryview(二进制类型)
- range
- tuple
- str
- array
- 映射(dict)
- 集合
- set
- forzenset
- 上下文管理器类型:之后讲解
- with语句
- 其他类型:之后讲解
- 模块类型
- class和实例
- 函数类型
- 方法类型
- 代码类型
- object对象
- type类型
- ellipsis类型
- notimplemented类型
- 生成器对象类型
# id:内存地址
a = 1
id(a) # None全局只有一个
a = None
b = None
print(id(a) == id(b)) # true
第二章python中的一切皆对象的更多相关文章
- python中的一切皆对象
python中一切皆对象是这个语言灵活的根本.函数和类也是对象,属于python的一等公民.包括代码包和模块也都是对象.python的面向对象更加彻底. 可以赋值给一个变量可以添加到集合对象中可以作为 ...
- 一、python中的一切皆对象
1.函数和类是对象,是Python中的一级公民 (1)将函数和类赋值给一个变量 将函数或类赋值给一个变量,就可以把该变量当成函数或类来使用 def ask(name): print(name) cla ...
- 第二章 python中重要的数据结构(下)
二.元组(tuple):不可变序列 跟list一样,也是一种序列,唯一不同的是,元组元素不能被修改,通常用(, ,)表示元组,也可以不加括号. #创建元组 >>> 1,2,3 (1, ...
- 《python解释器源码剖析》第2章--python中的int对象
2.0 序 在所有的python内建对象中,整数对象是最简单的对象.从对python对象机制的剖析来看,整数对象是一个非常好的切入点.那么下面就开始剖析整数对象的实现机制 2.1 初识PyLongOb ...
- [Python笔记][第二章Python序列-tuple,dict,set]
2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...
- [python笔记][第二章Python序列-list]
2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...
- 第二章Python入门
第二章 Python入门 2.1.简介 Python是著名的"龟叔"(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言 Pytho ...
- [Python笔记][第二章Python序列-复杂的数据结构]
2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...
- Python中的变量引用对象需注意的几点
Python中的变量引用对象需注意的几点 分类:Python (55) (0) 普通引用: Python中,变量的作用仅仅是一个标识,只有赋值后才被创建,它可以引用任何类型的对象,而且在引用之前必须 ...
随机推荐
- C# 使用ConcurrentBag类处理集合线程安全问题
在日常的开发中,经常会遇到多个线程对同一个集合进行读写操作,就难免会出现线程安全问题. 以下代码,如果使用List<T>就会遇到问题:System.InvalidOperationExce ...
- pyqt中pyrcc和pyuic的使用
一.pyrcc的使用 1.1 作用 将资源文件转换成py文件,并在主程序引入 1.2 资源文件编写说明 新建resource.qrc,代码如下: <!DOCTYPE RCC><RCC ...
- SWIG 3 中文手册——3. Windows 上使用 SWIG
目录 3 Windows 上使用 SWIG 后续章节 3 Windows 上使用 SWIG 暂时略过. 后续章节 <4. 脚本语言>
- windows 下验证文件MD5
CertUtil -hashfile C:\Users\admin\Downloads\aaa.txt MD5 CertUtil -hashfile C:\Users\admin\Downloads\ ...
- 《 .NET并发编程实战》阅读指南 - 第14章
先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.
- JavaScaript学习笔记第(一)
js由三部分组成,分别是ECMAScript.DOM.BOM 其中ECMAScript规定了js的语法 js是一门解释型语言.脚本语言.动态类型语言.基于对象语言 书写js代码和CSS一样,有三个书写 ...
- [Silverlight 4] Textbox style模擬Textblock 使可以選取、複製
childwindow 做為訊息視窗,使用textblock,可是textbloc無法選取內容及複製, 就改用textbox假裝成textblock ---原本的textblock <contr ...
- [個人紀錄] git 疑難排解
1.git pull 時發生錯誤,要拉下來的檔案內含有檔名太長的檔案 ans: https://stackoverflow.com/questions/22575662/filename-too-lo ...
- SQL Date 时间类型处理
SQL 日期(Dates) 2019-10-17 22:17:26 当我们处理日期时,最难的任务恐怕是确保插入的日期的格式,与数据库中日期列的格式相匹配. 保存的如果是日期部分,查询不会有太大问题 ...
- C# vb .NET读取识别条形码线性条码CODE93
code93是比较常见的条形码编码规则类型的一种.如何在C#,vb等.NET平台语言里实现快速准确读取该类型条形码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确 ...