python一切皆对象的理解_Python难点解析---初级篇2.一切皆对象
在刚开始接触Python的时候,就一直听到一句话:
一切皆对象
那么,对于对象他有一些什么重要的属性呢。
Python对象的属性
对于一个对象而言,他首先应该是具备类型这一属性,那么类型对应的则是值,由于对象都是在内存中生存的,所以他也应该拥有一个地址。
因此,作为一个对象,他会有以下三个属性:
类型
值
地址
先看以下代码,对于一个变量a有以下的定义:
a = 1
b = "hello world"
c = [1,2,3]
print a, type(a), id(a)
print b, type(b), id(b)
print c, type(c), id(c)
output:
1 38567656
hello world 43878752
[1, 2, 3] 43862216
通过type函数可以直接获得对象的类型。
通过id函数可以直接获得对象的地址。
一切皆对象
基本数据类型实例是对象
Python有以下几种基本数据类型:
#数字
1234, 3.14, 1231L, 3+4j, Decimal
#字符串
'hello', "world"
#列表
[1,2,3,4]
#元组
(1, "hello", 2)
#字典
{1 : "hello", 2 : "world"}
#文件
file = open("file.txt", 'r')
#其它类型
集合,类型,None,布尔型
类是对象
除了上面列举的a,b,c三个是对象,类也是一个对象,类是元类的实例。
class C(object):
def __init__(self):
pass
print type(C)
>>>
由上面的代码可以看到,类C是的实例,是类的类,我们称为元类,元类是用来定制类的关键。这点暂时不做展开。
函数是对象
除了上面这些,函数也是对象,具体可以看下面的代码。
def foo():
print "foo"
a = foo
a()
>>>foo
从代码中可以看到,函数可以作为一个对象来进行传递,这一特性加上闭包则是Python的语法糖装饰器。
def wrap(func):
def wrapper(*args, **kwargs):
print "Hello %s" % func.__name__
func(*args, **kwargs)
return wrapper
@wrap
def foo():
print "foo"
a = foo
a()
>>>Hello foo
>>>foo
装饰器将函数作为一个对象传入,a = wrap(foo),执行的时候则会执行Hello foo的语句然后再执行foo函数,装饰器是AOP(面向切面编程)的一种用法,可以在不改变函数结构的情况下通过语法糖插入日志、性能调试等功能。
补充:对象分类
Python的基本数据类型按是否可变可以分为:
可变数据类型
不可变数据类型
可变数据类型:
指在运行过程中可以更改其值的数据类型,常见的有list(列表),dict(字典)
不可变数据类型:
指在运行过程不可以改变值的数据类型,常见的有tuple(元组),num(数字),str()字符串
python一切皆对象的理解_Python难点解析---初级篇2.一切皆对象相关推荐
- Python 难点解析---初级篇1.Python WWH
Python作为一个使用简便,并且开发效率极快的解释型语言,上手特别的简单,但是简洁的语法中有时也藏着不少的坑,接下来的文章里面会把笔者近一年学习中遇到的坑都翻出来. 接下来用WWH原则来解析一下Py ...
- 搜索引擎——用户搜索意图的理解及其难点解析,本质是利用机器学习用户的意图分类...
用户搜索意图的理解及其难点解析 搜索引擎涉及的技术非常的繁复,既有工程架构方面的,又有算法策略方面的.综合来讲,一个搜索引擎的技术构建主要包含三大部分: 对 query 的理解 对内容(文档)的理解 ...
- python一切皆对象的理解_Python中万物皆对象?的理解
在很多地方都看到有过这样一句话,但是对象这个词的理解依然停留在谈朋友那个对象上-- python中一切皆为对象,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) ...
- python中的引用怎么理解_python 引用和对象理解
今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象 ...
- 求python一个类与对象的代码_Python基础系列(五)类和对象,让你更懂你的python代码...
首先,非常感谢各位打开本博文,本博文是Python入门基础系列文章之一,Python目前是非常火的编程工具,其实作为编程不在只是程序员的专利,每一个人在日常的工作中.学习中都会或多或少的要用到一些工具 ...
- python语言不支持面向对象_Python 面向对象(初级篇)
概述面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面向 ...
- python变量类型是动态的_Python 学习 第四篇:动态类型模型
Python的变量不用声明,赋值之后就可以直接使用,类型是在运行过程中自动确定的,这就是动态类型模型.该模型把变量和对象设计成两个不同的实体,对象是存储数据的地方,对象的类型是由初始值自动决定的,而变 ...
- Javascript的面对对象的理解 【上】(prototype,函数和对象等概念)
首先先生明一下JavaScript面对对象和Java,c#这种高级语言的面对对象有很较大的不同. JavaScript在面对对象"继承"的时候,可以动态的修改修正.换句话说可以动态 ...
- python一切皆对象的理解_python中为什么万物皆对象
在python环境中我们输出一个没有声明的变量a 为什么会报name 'a' is not defined.为什么是name 而不是variable. 因为在python中把所有的函数名,变量名.类型 ...
最新文章
- ionic4中使用Swiper触屏滑动---心酸路
- Xcode 添加前缀
- 九、爬虫学会如何入库
- SAP UI5:如何处理resource not found for the segment XXXXX error message
- 不生效 设置了viewport_配置viewport
- 【渝粤教育】电大中专电商运营实操 (8)作业 题库
- Python笔记(6) 数字
- Flask框架+ajax框架
- 黑客炸弹弹窗假装自己是黑客
- html文件上传协议,模拟HTML表单上传文件(RFC 1867)
- winows10和centos 双系统 安装记录
- Quasi_Newton
- mysql查询结果百分比表示_MySQL 查询结果以百分比显示简单实现
- 如何高效进行大规模分类?
- GBase8s数据库GRANT 语句
- 名字与地址转换getservbyname 与 getservbyport函数
- [zz]busycai的找工之路
- Ubuntu Conda和pip安装Pytorch失败解决 | pytorch安装网络问题 | pip国内源无效
- 国内优秀开源电商项目评测、PHP版和Java版都有开源
- 新玺配资:能耗双控双刃剑 造纸板块一飞冲天
热门文章
- 分布式发布订阅模型网络的实现有哪些
- CURL POST PHP
- bzoj 1930: [Shoi2003]pacman 吃豆豆 [费用流]
- Spring事务管理,使用@Transactional注解
- 线程池——JAVA并发编程指南
- 【Win10】【Win2D】实现控件阴影效果
- Google Chrome源码剖析【序】
- 【个人笔记】OpenCV4 C++ 图像处理与视频分析 07课
- Android8.1 Camera2+HAL3之HIDL open()流程(二十)
- Ubuntu18.04下使用docker制作ubuntu20.04镜像