Python中一切皆对象本章节首先对比静态语言以及动态语言,然后介绍 python 中最底层也是面向对象最重要的几个概念-object、type和class之间的关系,以此来引出在python如何做到一切皆对象、随后列举python中的常见对象。

1.Python中一切皆对象Python的面向对象更彻底,Java和C++中基础类型并不是对象。在Python中,函数和类也是对象,属于Python的一等公民。对象具有如下4个特征1.赋值给一个变量

2.可以添加到集合对象中

3.可以作为参数传递给函数

4.可以作为函数地返回值

下面从四个特征角度分别举例说明函数和类也是对象

1.1 类和函数都可以赋值给一个变量类可以赋值给一个变量class Person:

def __init__(self, name="lsg"):

print(name)

if __name__ == '__main__':

my_class = Person # 类赋值给一个变量

my_class() # 输出lsg,变量直接调用就可以实例化一个类,满足上面的特征1,这里显然说明类也是一个对象

my_class("haha") # 输出haha函数可以赋值给一个变量def func_test(name='lsg'):

print(name)

if __name__ == '__main__':

my_func = func_test

my_func("haha") # 输出haha,对变量的操作就是对函数的操作,等效于对象的赋值,满足上面的特征1,说明函数是对象。

1.2 类和函数都可以添加到集合中class Person:

def __init__(self, name="lsg"):

print(name)

def func_test(name='lsg'):

print(name)

if __name__ == '__main__':

obj_list = [func_test, Person]

print(obj_list) # 输出[, ]

1.3 类和函数都可以作为参数传递给函数class Person:

def __init__(self, name="lsg"):

print(name)

def func_test(name='lsg'):

print(name)

def print_type(obj):

print(type(obj))

if __name__ == '__main__':

print_type(func_test)

print_type(Person)

输出如下

可以明显地看出类和函数都是对象

1.4 类和函数都可以作为函数地返回值class Person:

def __init__(self, name="lsg"):

print(name)

def func_test(name='lsg'):

print(name)

def decorator_func():

print("pre function")

return func_test

def decorator_class():

print("pre class")

return Person

if __name__ == '__main__':

decorator_func()() # 返回的右值作为函数可以直接调用

decorator_class()() # 返回的右值作为类可以直接实例化

2.type、object和class的关系

代码举例如下, 可以得出三者的关系是type --> class --> obj

2.1 type --> int --> aa = 1

print(type(a)) #

print(type(int)) #

2.2 type --> str --> bb = 'abc'

print(type(b)) #

print(type(str)) #

2.3 type --> Student --> stuclass Student:

pass

stu = Student()

print(type(stu)) #

print(type(Student)) #

2.4 type --> list --> cc = [1, 2]

print(type(c)) #

print(type(list)) #

总结图:

3.Python中常见的内置类型对象的三个特征:身份、内存和值身份:在内存中的地址,可以用id(变量)函数来查看

类型:任何变量都必须有类型

常见的内置类型如下

3.1 None:全局只有一个如下代码,两个值为None的变量地址完全相同,可见None是全局唯一的a = None

b = None

print(id(a))

print(id(b))

print(id(a) == id(b))

3.2 数值类型int

float

complex(复数)

bool

3.3 迭代类型:iterator

3.4 序列类型list

bytes、bytearray、memoryview(二进制序列)

range

tuple

str

array

3.5 映射类型(dict)

3.6 集合set

frozenset

3.7 上下文管理类型(with)

3.8 其他模块类型

class和实例

函数类型

方法类型

代码类型

object类型

type类型

elipsis类型

notimplemented类型

python函数赋值给对象_【Python核心编程笔记】一、Python中一切皆对象相关推荐

  1. python 类和对象_面向对象的编程思想和Python的类,访问和属性,继承

    面向对象的编程思想和Python的类,类的方法和属性,实例方法这一文从面向对象的角度,介绍类的定义,类的属性和自定义方法. 本文将从访问限制,属性,继承,方法重写这几个方面继续介绍面向对象的编程思想和 ...

  2. [PYTHON] 核心编程笔记(14.Python执行环境)

    在python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的python脚本,或执行一个磁盘上的文件,或通过网络来运行文件 在特定执行场景包括: 在当前脚本继续运行 创建和管理子进程 执行 ...

  3. contentwindow无法搜索对象_面试官:讲一下Jvm中如何判断对象的生死?

    但凡问到 JVM(Java 虚拟机)通常有 99% 的概率一定会问,在 JVM 中如何判断一个对象的生死状态? 判断对象的生死状态的算法有以下几个: 1.引用计数器算法 引用计算器判断对象是否存活的算 ...

  4. python一切皆对象的理解_在 Python 中万物皆对象

    在 Python 中一切都是对象,并且几乎一切都有属性和方法.所有的函数都有一个内置的 __doc__ 属性,它会返回在函数源代码中定义的 doc string:sys 模块是一个对象,它有一个叫作 ...

  5. python怎么复数乘方开方_运维必须掌握的 Python 宝典:值得每天复习一遍

    前言 本文旨在更好地总结 Python 基础知识,力求简明扼要,以供实战演练时能够快速查询遗忘的知识点. 学一门语言贵在坚持用它,不用就淡忘了,而记录下一篇文章也有助于日后快速回忆.全文分为两大部分, ...

  6. python语言中一切皆对象_2 python 中一切皆对象

    python 中一皆对象 在 python 编程语言中所有的一切都是对象 , python 语言相对于 C++ 或 java 这样的语言 (静态语言), 面向对象这个思想更加的彻底. 2.1 函数和类 ...

  7. python webdriver点击指令_测开系列Selenium Webdriver Python(20)--Webdriver运行原理

    Webdriver运行原理 转帖请注明出处!谢谢 在开发Webdriver的自动化脚本过程中,Webdriver后台在创建WebDriver实例的过程中,先确认浏览器的原生组件中是否存在可匹配的版本. ...

  8. python中一切都是对象_python中一切皆对象

    众所周知python是一款面向对象语言,在python语言中,可以说python的一切皆对象是不会错的.如果你学过java的话,你也会知道java也是一款面向对象语言,但是对比起来,python才是真 ...

  9. python object类_Python中一切皆对象,这个对象究竟是什么?

    点击上方蓝字CGRnDStudio关注我们" CG TD编程技术相关领域自媒体 " 作者:古明地盆 https://www.cnblogs.com/traditional/p/13 ...

最新文章

  1. 新人赛《金融风控贷款违约》避坑指南!
  2. 综述|基于深度学习方式的场景分类算法
  3. python 对输入的数据进行排序_使用插入排序对输入数据排序
  4. 电动力学每日一题 2021/10/10
  5. SAP CRM enterprise search index调试细节
  6. *多叉树的树形背包常见建模方法
  7. Java三维文字特效设计_jQuery实现3D文字特效的方法
  8. php rsa加密乱码_php RSA加解密
  9. 当,程序员突然想画画,AI+机器人就该登场了
  10. python删除指定路径文件_基于python实现删除指定文件类型
  11. hdu 1087 Super Jumping! Jumping! Jumping! 解题报告
  12. SpringMVC4+Hibernate4运行报错Could not obtain transaction-synchronized Session for current thread...
  13. 第11章从 Web 抓取信息
  14. java中的undefined_undefined是什么意思啊?
  15. GridView使用大全
  16. jvm设置http代理
  17. 搭建DEM企业管理器
  18. mm7 彩信发送方法
  19. matlab均方根误差
  20. 贪心算法——埃及分数问题

热门文章

  1. [漏洞检测]Proxpy Web Scan设计与实现(未完待续)
  2. 1-springboot基础
  3. python几行代码识别验证码_Python有多强?文字识别(验证码识别)只需三行代码!...
  4. android.mk官网介绍,转载:Android.mk语法介绍
  5. diff算法_Virtual Dom和Diff算法
  6. 的ppt_PPT制作小白,如和做好PPT
  7. 大数据分块_空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
  8. 参考优秀案例,让你设计的网页更惊艳?
  9. 设计灵感|音乐播放器App界面如何设计?
  10. 中国风海报设计必备的墨染素材!点睛国潮风!