python函数赋值给对象_【Python核心编程笔记】一、Python中一切皆对象
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中一切皆对象相关推荐
- python 类和对象_面向对象的编程思想和Python的类,访问和属性,继承
面向对象的编程思想和Python的类,类的方法和属性,实例方法这一文从面向对象的角度,介绍类的定义,类的属性和自定义方法. 本文将从访问限制,属性,继承,方法重写这几个方面继续介绍面向对象的编程思想和 ...
- [PYTHON] 核心编程笔记(14.Python执行环境)
在python中有多种运行外部程序的方法,比如,运行操作系统命令或另外的python脚本,或执行一个磁盘上的文件,或通过网络来运行文件 在特定执行场景包括: 在当前脚本继续运行 创建和管理子进程 执行 ...
- contentwindow无法搜索对象_面试官:讲一下Jvm中如何判断对象的生死?
但凡问到 JVM(Java 虚拟机)通常有 99% 的概率一定会问,在 JVM 中如何判断一个对象的生死状态? 判断对象的生死状态的算法有以下几个: 1.引用计数器算法 引用计算器判断对象是否存活的算 ...
- python一切皆对象的理解_在 Python 中万物皆对象
在 Python 中一切都是对象,并且几乎一切都有属性和方法.所有的函数都有一个内置的 __doc__ 属性,它会返回在函数源代码中定义的 doc string:sys 模块是一个对象,它有一个叫作 ...
- python怎么复数乘方开方_运维必须掌握的 Python 宝典:值得每天复习一遍
前言 本文旨在更好地总结 Python 基础知识,力求简明扼要,以供实战演练时能够快速查询遗忘的知识点. 学一门语言贵在坚持用它,不用就淡忘了,而记录下一篇文章也有助于日后快速回忆.全文分为两大部分, ...
- python语言中一切皆对象_2 python 中一切皆对象
python 中一皆对象 在 python 编程语言中所有的一切都是对象 , python 语言相对于 C++ 或 java 这样的语言 (静态语言), 面向对象这个思想更加的彻底. 2.1 函数和类 ...
- python webdriver点击指令_测开系列Selenium Webdriver Python(20)--Webdriver运行原理
Webdriver运行原理 转帖请注明出处!谢谢 在开发Webdriver的自动化脚本过程中,Webdriver后台在创建WebDriver实例的过程中,先确认浏览器的原生组件中是否存在可匹配的版本. ...
- python中一切都是对象_python中一切皆对象
众所周知python是一款面向对象语言,在python语言中,可以说python的一切皆对象是不会错的.如果你学过java的话,你也会知道java也是一款面向对象语言,但是对比起来,python才是真 ...
- python object类_Python中一切皆对象,这个对象究竟是什么?
点击上方蓝字CGRnDStudio关注我们" CG TD编程技术相关领域自媒体 " 作者:古明地盆 https://www.cnblogs.com/traditional/p/13 ...
最新文章
- 新人赛《金融风控贷款违约》避坑指南!
- 综述|基于深度学习方式的场景分类算法
- python 对输入的数据进行排序_使用插入排序对输入数据排序
- 电动力学每日一题 2021/10/10
- SAP CRM enterprise search index调试细节
- *多叉树的树形背包常见建模方法
- Java三维文字特效设计_jQuery实现3D文字特效的方法
- php rsa加密乱码_php RSA加解密
- 当,程序员突然想画画,AI+机器人就该登场了
- python删除指定路径文件_基于python实现删除指定文件类型
- hdu 1087 Super Jumping! Jumping! Jumping! 解题报告
- SpringMVC4+Hibernate4运行报错Could not obtain transaction-synchronized Session for current thread...
- 第11章从 Web 抓取信息
- java中的undefined_undefined是什么意思啊?
- GridView使用大全
- jvm设置http代理
- 搭建DEM企业管理器
- mm7 彩信发送方法
- matlab均方根误差
- 贪心算法——埃及分数问题
热门文章
- [漏洞检测]Proxpy Web Scan设计与实现(未完待续)
- 1-springboot基础
- python几行代码识别验证码_Python有多强?文字识别(验证码识别)只需三行代码!...
- android.mk官网介绍,转载:Android.mk语法介绍
- diff算法_Virtual Dom和Diff算法
- 的ppt_PPT制作小白,如和做好PPT
- 大数据分块_空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
- 参考优秀案例,让你设计的网页更惊艳?
- 设计灵感|音乐播放器App界面如何设计?
- 中国风海报设计必备的墨染素材!点睛国潮风!