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)
- 集合
- 上下文管理器类型:之后讲解
- 其他类型:之后讲解
- 模块类型
- class和实例
- 函数类型
- 方法类型
- 代码类型
- object对象
- type类型
- ellipsis类型
- notimplemented类型
- 生成器对象类型
# id:内存地址
a = 1
id(a)
# None全局只有一个
a = None
b = None
print(id(a) == id(b)) # true