python 中一皆对象
在 python 编程语言中所有的一切都是对象 , python 语言相对于 C++ 或 java 这样的语言 (静态语言), 面向对象这个思想更加的彻底。
2.1 函数和类也是对象 , 属于python的一等公民
1.赋值给一个变量
2.可以添加到集合对象中
3.可以作为参数传递给函数
4.可以当作函数的返回值 (装饰器的原理)
1.赋值给一个变量
def ask(name="bobby"):
print(name)
my_func = ask
my_func("bobby")
# 我们可以得到输出结果 bobby
class Person:
def __init__(self):
print("bobby")
my_cls = Person
my_cls()
# 通过这段代码我们依然可以得到输出结果 bobby
# 说明了函数和类都是对象,是一等公民
2. 可以添加到集合对象中
def ask(name = "hello"):
print(name)
class Person:
def __init__(self):
print("bobby")
obj_list = []
obj_list.append(ask)
obj_list.append(Person)
for item in obj_list:
item()
# 在这段代码中我讲ask 和 Person 加入到了list中随后迭代list中的每一个元素并且调用这个元素,
# 如此以来得到输出结果 hello bobby
# 注:函数如果没有返回值 , 那么会默认返回None
2.2 type , object , class 的关系
type 的用法
1.生成一个类
2.返回一个对象的类型
可以发现
1 是一个整型
int 又是由 type 来生成的
更一般的我们就得到 type -> class -> obj (type 生成 class , class 生成 obj 对象)
object 是最顶层的基类 , 所有的类推导最顶层都继承自 object 类
重点:
type 是一个类 , 同时 type 也是一个对象 ,
2.3 python 中的内置类型
对象的三个特征 : 1.身份(使用id函数) 2. 类型 3.值
None (全局只有一个)
数值 (int , float , complex , bool)
迭代类型(可以用for遍历)
序列类型(可以切片 bytes bytearray memoryview(二进制序列) , range , tuple , str ,array)
映射(dict)
集合 (set , frozenset)
上下文管理器(with 语句)
其他...(模块,函数等等。。。)
@@