随笔分类 - 我的Python笔记
摘要:最近使用Python的过程中遇到了一些坑,例如用 这个可变对象作为函数的默认参数,模块循环依赖等等。 在此记录一下,方便以后查询和补充。 避免可变对象作为默认参数 在使用函数的过程中,经常会涉及默认参数。在Python中,当使用可变对象作为默认参数的时候,就可能产生非预期的结果。 下面看一个例子:
阅读全文
摘要:当我们实现一个Web应用(application)的时候,通常不会考虑如何接受HTTP请求、解析HTTP请求、发送HTTP响应等等,我们只关心处理逻辑,而不用去关心HTTP规范的细节。之所以有这层透明,是因为Web Server和Web Application之间有一套规范的接口,这套接口帮我们隐藏...
阅读全文
摘要:从前面"Python对象"文章中了解到,在Python中一切都是对象,类可以创建实例对象,但是类本身也是对象。class C(object): pass c = C()print c.__class__print C.__class__ 代码中,通过"__class__"属性来查看...
阅读全文
摘要:本文将介绍一下类的构造函数和初始化函数,以及如何通过"魔术方法"定制一个类。类构造和初始化在前面的文章中,经常使用初始化函数"__init__",下面看看"__init__"和"__new__"的联系和差别。下面先通过一段代码看看这两个方法的调用顺序:class A(object): def ...
阅读全文
摘要:上一篇介绍了Python中类相关的一些基本点,本文看看Python中类的继承和__slots__属性。继承在Python中,同时支持单继承与多继承,一般语法如下:class SubClassName(ParentClass1 [, ParentClass2, ...]): class_suit...
阅读全文
摘要:在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象。例如,下面创建了一个Student的类,并且实现了这个类的初始化函数"__init__":class Student(object): count = 0 books = [] def _...
阅读全文
摘要:Python中的函数也是一种对象,而且函数还是一等公民。函数能作为参数,也能作为返回值,这使得Python中的函数变得很灵活。想想前面两篇中介绍的通过内嵌函数实现的装饰器和闭包。下面就介绍一下Python函数相关的一写内容。可变长度参数在编程的过程中,可能会遇到函数参数个数不固定的情况,这时就需要使...
阅读全文
摘要:闭包(closure)是函数式编程的重要的语法结构,Python也支持这一特性,下面就开始介绍Python中的闭包。首先看看闭包的概念:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环...
阅读全文
摘要:装饰模式有很多经典的使用场景,例如插入日志、性能测试、事务处理等等,有了装饰器,就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的。下面就一步步看看Python中的装饰器。一个简单的需求现在有一个简单的函数"myfunc",想通过代码得到这个函数的大概执行时间。我们可以直接把计时逻...
阅读全文
摘要:在Python中,很多对象都是可以通过for语句来直接遍历的,例如list、string、dict等等,这些对象都可以被称为可迭代对象。至于说哪些对象是可以被迭代访问的,就要了解一下迭代器相关的知识了。迭代器迭代器对象要求支持迭代器协议的对象,在Python中,支持迭代器协议就是实现对象的__ite...
阅读全文
摘要:Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。下面本文就通过简单的例子介绍一下这些概念之间的差别。对象赋值直接看一段代码:will = ["Will", 28, ["Python", "C#", "JavaScript"]]wilber =...
阅读全文
摘要:在编写程序的过程中,经常需要进行格式化输出,每次用每次查。干脆就在这里整理一下,以便索引。格式化操作符(%)"%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)。下面整理了一下Python中字符串格式化符合:格式化符号说明%c转换成...
阅读全文
摘要:在Python中,可以通过and,or和not进行逻辑运算,下面就来看看and和or的简单介绍。逻辑与-and对于包含and运算的表达式,Python解释器将从左到右扫描,返回第一个为假的表达式值,无假值则返回最后一个表达式值。下面看一个使用and的例子:# if all the expressio...
阅读全文
摘要:上下文管理器在使用Python编程中,可以会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作;当语句块执行完成后,需要继续执行一些收尾动作。例如:当需要操作文件或数据库的时候,首先需要获取文件句柄或者数据库连接对象,当执行完相应的操作后,需要执行释放文件句柄或者关闭数...
阅读全文
摘要:前面一篇文章介绍了一些Python对象的基本概念,这篇接着来看看Python对象相关的一些内容。Python对象的比较Python对象有三个要素:身份,类型和值,所以我们就分别从这三个角度出发看看对象之间的比较。对象身份比较对象身份的比较,其实就是比较对象的内存地址,即内建函数id()的结果比较。可...
阅读全文
摘要:Python是一门面向对象的语言,在Python中一切都是对象,函数是对象,类型也是对象。下面就看看Python中对象相关的内容。Python对象基本概念Python对象有三个基本的要素:身份:对象的唯一性身份标志,是该对象的内存地址(可用内建函数id()获得)类型:对象的类型决定了该对象可以保存什...
阅读全文