随笔分类 -  python

摘要:类型转换魔法 类型转换魔法其实就是实现了str、int等工厂函数的结果,通常这些函数还有类型转换的功能,下面是一些相关的魔法方法: __int__(self) 转换成整型,对应int函数。 __long__(self) 转换成长整型,对应long函数。 __float__(self) 转换成浮点型, 阅读全文
posted @ 2016-07-22 00:57 scolia 阅读(3627) 评论(0) 推荐(0)
摘要:自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像 python 的内置序列(dict,tuple,list,string等)。 如果要实现这个功能,就要遵循 python 的相关的协议。所谓的协议就是一些约定内容。例如,如果要将一个类要实现迭代,可以实现__iter__( 阅读全文
posted @ 2016-07-21 00:47 scolia 阅读(4378) 评论(0) 推荐(1)
摘要:反射运算 什么是反射运算符,其实就是反转了两个对象,下面先看一个普通运行符的实现: 在普通的加法运算中,调用的是+号左边的__add__方法,调用谁谁就为self。所以左边是self,右边为other,所以结果如上。 而反射运行其实就是交换这两者,下面看例子: 首先,不同的地方是这里调用的+后右边的 阅读全文
posted @ 2016-07-19 22:49 scolia 阅读(4387) 评论(2) 推荐(5)
摘要:在比较的魔法方法中,我们讨论了魔法方法其实就是重载了操作符,例如>、<、==等。而这里,我们继续讨论有关于数值的魔法方法。 1.单目运算符或单目运算函数 __pos__(self) 实现一个取正数的操作(比如 +some_object ,python调用__pos__函数) __neg__(self 阅读全文
posted @ 2016-07-18 17:16 scolia 阅读(3096) 评论(0) 推荐(0)
摘要:在python2.x的版本中,支持不同类型的比较,其比较原则如下: 内置类型: 1.同一类型: 1.1)数字类型:包含int、float、long、complex、bool(bool类型是int的子类,且True=1, False=0)。就按照数字的大小进行比较,例如: 1.2)非数字类型: 1.2 阅读全文
posted @ 2016-07-17 23:12 scolia 阅读(2496) 评论(0) 推荐(3)
摘要:类中的方法,其实就是类中的函数,可以分为:实例方法,类方法,静态方法。方法和字段一样,也是属于类的属性,所以也具有运行中修改的特效, 但一般不推荐这样做。 我在类的基本语法中,介绍了构造器方法:__init__ 、__new__;解构器方法:__del__; 注意,这里虽然是以两个下划线(__)开头 阅读全文
posted @ 2016-06-19 16:36 scolia 阅读(23787) 评论(0) 推荐(2)
摘要:在上篇的时候,我们知道了:属性就是属于一个对象的数据或者函数,我们可以通过句点(.)来访问属性,同时 python 还支持在运作中添加和修改属性。 而数据变量,类似于: name = 'scolia' 这样的形式,会称其为字段;而类里面的函数,又称为方法。而方法又分为实例方法,类方法和静态方法,这些 阅读全文
posted @ 2016-06-13 22:13 scolia 阅读(25594) 评论(2) 推荐(3)
摘要:当我发现要写python的面向对象的时候,我是踌躇满面,坐立不安呀。我一直在想:这个坑应该怎么爬?因为python中关于面向对象的内容很多,如果要讲透,最好是用面向对象的思想重新学一遍前面的内容。这个坑是如此之大,犹豫再三,还是只捡一下重要的内容来讲吧,不足的内容只能靠大家自己去补充了。 惯例声明一 阅读全文
posted @ 2016-06-12 23:23 scolia 阅读(1547) 评论(0) 推荐(0)
摘要:python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。 以下说明主要针对 python2.7,其他版本可能存在差异。 也许直接看定义并不太能明白,下面我们先来看一下什么叫做内部函数: 我 阅读全文
posted @ 2016-06-11 22:00 scolia 阅读(1823) 评论(0) 推荐(0)
摘要:我们日常在处理文件的时候一般都遵循这样的逻辑:打开文件,操作文件,保存关闭文件。 但在python中,又分为以下几步:创建文件对象,对文件对象进行操作(读入,写入之类的),关闭文件。 由于文件操作在python2.x和python3.x中区别还是比较大的,3.x可以接受更多的参数。 所以在此说明:以 阅读全文
posted @ 2016-06-03 23:57 scolia 阅读(1211) 评论(0) 推荐(0)
摘要:在正式说明之前,先给大家一个参考资料:戳这里 文章的内容参考了这篇资料,并加以总结,为了避免我总结的不够完善,或者说出现什么错误的地方,有疑问的地方大家可以看看上面那篇文章。 以下说明是针对于python2.x版本,因为在python3.x中默认使用的是Unicode。 下面开始讲python中的编 阅读全文
posted @ 2016-06-03 00:00 scolia 阅读(1430) 评论(5) 推荐(2)
摘要:python中至少包括两种错误:语法错误(syntax errors)和异常(exceptions)。 1.语法错误 语法错误,也被称作解析错误 语法分析器指出错误行,并且在检测到错误的位置前面显示一个小“箭头”。 错误是由箭头前面的标记引起的(或者至少是这么检测的)。错误会输出文件名和行号,所以如 阅读全文
posted @ 2016-05-31 21:13 scolia 阅读(2139) 评论(1) 推荐(1)
摘要:什么是函数,函数说白了就是将一系列代码封装起来,实现代码的重用。 什么是代码重用? 假设我有这样的需求: 但是我还是觉得太麻烦了,每次想吃饭的时候都要重复这样的步骤。此时,我希望有这样的机器: 将重复的工作封装到一起,我们只要向机器里放入东西,就能得到我们想要的。 这也就是所谓的代码重用。 自定义函 阅读全文
posted @ 2016-05-30 23:51 scolia 阅读(12235) 评论(2) 推荐(2)
摘要:在讲什么是深浅拷贝之前,我们先来看这样一个现象: 为什么我只对b进行修改,却影响到了a呢?看过我在之前的文章中就说过:序列中保存的都是内存的引用。 所以,当我们通过b去修改里面的空列表的时候,其实就是修改内存中的同一个对象,所以会影响到a。 代码验证无误,所以虽然a和b是两个不同的对象,但是里面的引 阅读全文
posted @ 2016-05-30 16:13 scolia 阅读(649) 评论(0) 推荐(1)
摘要:在前面学习讲完while循环之后,现在终于要将for循环这个坑填上了。之所以拖到现在是因为for循环对前面讲过的序列、字典、集合都是有效的,讲完前面的内容再来讲for循环会更加容易上手。 首先,for循环和while循环一样,都是在满足一定条件的时候对其内层的代码进行循环执行。不同的是,while循 阅读全文
posted @ 2016-05-30 13:12 scolia 阅读(6903) 评论(2) 推荐(1)
摘要:什么是集合?正如其字面的意思,一堆东西集中合并到一起。乍一听貌似和容器没什么差别,嗯,好吧,集合也算是一种容器。 在学习这个容器有什么不同之前,先看看集合是如何创建的: 集合分为两种,一种是不可变的,一种是可变的,两者的差异后面会分析。 不过,我们创建了两个空的集合貌似么什么意思。 为了使其有意义, 阅读全文
posted @ 2016-05-30 00:07 scolia 阅读(1765) 评论(0) 推荐(0)
摘要:字典其实和之前的元祖和列表功能相似,都是用来储存一系列对象的。也就是一种可变容器,或者是我所比喻的革新派的菜单。 但也不是完全相同,我在之前曾经将字典称为特殊的'序列',是字典拥有序列的部分特性,但是又不符合序列的定义。 首先我们来看下字典是如何创建的: 我们可以使用{} 或者dict() 来创建一 阅读全文
posted @ 2016-05-29 15:08 scolia 阅读(1353) 评论(0) 推荐(2)
摘要:先看列表是如何创建的: 同样有两种创建方式,但一般用第一种。 列表和元祖最大的不同就是列表是可以修改的。 老规矩,使用 help(list) ,真的是 help() 大法好呀。 好,来人,上代码。 Help on class list in module __builtin__: class lis 阅读全文
posted @ 2016-05-28 22:11 scolia 阅读(1095) 评论(0) 推荐(6)
摘要:在学习什么是元组之前,我们先来看看如何创建一个元组对象: 使用()或者 tuple() 函数创建,不过注意这里的传参还是要用()括起来的,所以一般不用函数的方式创建,函数的作用多在于强制转换数据类型(在内置函数中说明)。 另外,当元组只有一个元素的时候: 这样写是不行的,因为函数的传参也是用(),所 阅读全文
posted @ 2016-05-28 12:20 scolia 阅读(1630) 评论(0) 推荐(1)
摘要:本来说完字符串、数字、布尔值之后,应该要继续讲元祖、列表之类的。但是元祖和列表都属于序列,所以有必要先讲讲python的序列是什么。 首先,序列是是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。每个索引对应一个元素。 阅读全文
posted @ 2016-05-28 00:57 scolia 阅读(7186) 评论(0) 推荐(0)