犹记得当初学习Python的时候,对于Python一切皆对象非常懵逼,由于Python是面向对象的动态型语言,而在函数及高阶函数的应用中,如若对于一切皆对象不是有很透彻的了解,基础不是那么牢固的话,那么对于从此的Python进阶而言,就有点拖后腿了,鉴于有朋友跟我联系说,对于一切皆对象掌握的不是太牢固,那么, 木子的本篇博客就对此知识点进行归纳总结。 若有不当之处,还望各位大佬指正。编程
长话短说,本文主要针对Python一切皆对象来讨论,主要从如下两个方面来论述:bash
Python的一等公民app
type、object和class的关系函数式编程
对于Python的常见内置类型,本篇就不作详细阐述函数
内置类型: None(全局只有一个) 数值类型:int、float、complax(复数)、bool 迭代类型 序列类型:list、bytes、range、tuple、str、array 映射类型:dict 集合类型:set、frozenset 上下文管理类型:with学习
何为一等公民?ui
针对赋值给变量及添加到集合对象中,代码予以展现:spa
def func(name='Python'):
print(f'the func is {name}')
class Test:
def __init__(self):
print(f'the class is {Test.__name__}')
obj_list = []
obj_list.append(func)
obj_list.append(Test)
for item in obj_list: # 添加至集合对象中
print(item())
复制代码
那么上述例子,代码运行结果以下:指针
the func is Python # 函数func运行,打印结果
None # 函数func因没有return,返回None
the class is Test # 类Test运行,打印结果
<__main__.Test object at 0x0000024AB34526A0> # 类Test运行,因没有返回值,调用item(),返回类Test的对象
复制代码
那么对于能够做为参数传递,如下代码展现:code
def func(name='Python'):
print(f'the func is {name}')
def decorator_func():
print(f'the decorator_func is running')
return func # 返回函数func
my_test = decorator_func()
my_test('木子的三维世界') # 传递参数,调用func
复制代码
上述代码运行结果以下:
the decorator_func is running
the func is 木子的三维世界
复制代码
上面的代码是演示何为Python的一等公民,那么对于为何Python一切皆对象,想必有些道友仍是有点不太懂,那么重点来了,了解完type、object和class后,木子以为你们应该就能够完全hold住了。 为便于理解,代码予以展现:
# 示例以下
a=2019
b="一切皆对象"
print(type(2019))
print(type(int))
print(type(b))
print(type(str))
class Student:
pass
stu = Student()
print(type(stu))
print(type(Student))
print(int.__bases__)
print(str.__bases__)
print(Student.__bases__)
print(type.__bases__)
print(object.__bases__)
print(type(object))
print(type(type))
复制代码
上面代码,运行结果以下:
<class 'int'> # 2019是由int这个类建立的实例
<class 'type'> # int这个类是由type这个类建立的实例
<class 'str'> # 同上
<class 'type'>
<class '__main__.Student'> # stu是类Student建立的实例
<class 'type'> # 类Student是由type这个类建立的实例
(<class 'object'>,) # 类int的基类是object这个类
(<class 'object'>,) # 同上
(<class 'object'>,) # 同上
(<class 'object'>,) # 重点:类type的基类也是object这个基类
() # 重点:类object没有基类
<class 'type'> # 难点:类object是由类type建立的实例
<class 'type'> # 难点:类type是由type类自身建立的实例
复制代码
对于上面的代码,咱们能够得出如下结论:
想必有些道友,看到上面的代码,已经有点懵逼了。请看下图:
对于上面图片的解读以下:
Python一切皆对象对于函数式编程,以及Python各类高阶用法有很大帮助。 若是哪位道友还不是很清楚,那么多看看上面的图片,没事儿多看看,多看看不坏事儿。。。好了,话又开始多了
那么想必各位道友看到这里,已经对于Python一切皆对象有了比较清的认知,后续木子会更新一篇关于Python元类的博客,今天也算是作个铺垫。
备注:为什么type类能够自身的实例,有兴趣的道友能够了解下指针的概念。
时候不早了,睡觉睡觉,明天周一上班。。。