
——【Python】
文章平均质量分 74
白衣染霜陈
你只管努力,剩下的交给时光。
展开
-
【Python】学习笔记——-13、常用内建模块
什么是内建模块?Python之所以自称“batteries included”,就是因为内置了许多非常有用的模块,无需额外安装和配置,即可直接使用。本章将介绍一些常用的内建模块。一、datetimedatetime是Python处理日期和时间的标准库。获取当前日期和时间我们先看如何获取当前日期和时间:>>> from datetime imp原创 2017-02-27 14:42:54 · 1221 阅读 · 0 评论 -
【Python】学习笔记——-8.5、面向对象高级编程:5.使用枚举类
当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份:JAN = 1FEB = 2MAR = 3...NOV = 11DEC = 12好处是简单,缺点是类型是int,并且仍然是变量。更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能:from enum impo原创 2017-02-23 12:36:10 · 458 阅读 · 0 评论 -
【Python】学习笔记——-8.4、面向对象高级编程:4.定制类
看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。__slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数。除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类。__str__我们先定义一个Student类,打印一个实例原创 2017-02-23 12:35:01 · 761 阅读 · 0 评论 -
【Python】学习笔记——-8.3、面向对象高级编程:3.多重继承
继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。回忆一下Animal类层次的设计,假设我们要实现以下4种动物:Dog - 狗狗;Bat - 蝙蝠;Parrot - 鹦鹉;Ostrich - 鸵鸟。如果按照哺乳动物和鸟类归类,我们可以设计出这样的类的层次:但是如果按照“能跑”和“能飞”来归类,我们就应该设计出这样的类的层次:原创 2017-02-23 12:33:33 · 503 阅读 · 0 评论 -
【Python】学习笔记——-8.1、面向对象高级编程:1.使用__slots__
数据封装、继承和多态只是面向对象程序设计中最基础的3个概念。在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能。我们会讨论多重继承、定制类、元类等概念。正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class:class Student(object):原创 2017-02-23 12:31:27 · 379 阅读 · 0 评论 -
【Python】学习笔记——-5.5、偏函数
Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:>>> int(原创 2017-02-13 22:27:32 · 451 阅读 · 0 评论 -
【Python】学习笔记——-5.4、装饰器
由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。>>> def now():... print('2015-3-25')...>>> f = now>>> f()2015-3-25函数对象有一个__name__属性,可以拿到函数的名字:>>> now.__name__'now'>>> f.__name__'now'原创 2017-02-13 22:24:50 · 439 阅读 · 0 评论 -
【Python】学习笔记——-5.3、匿名函数
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))[1, 4, 9, 16, 25, 36, 4原创 2017-02-13 22:23:41 · 350 阅读 · 0 评论 -
【Python】学习笔记——-5.2、返回函数
函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计原创 2017-02-13 22:20:22 · 319 阅读 · 0 评论 -
【Python】学习笔记——-5.1.3、高阶函数之sorted
排序算法排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。Python内置的sorted()函数就可以对list进行排序:>>> sorted([36, 5, -12, 9, -21])[-21,原创 2017-02-13 22:19:13 · 660 阅读 · 0 评论 -
【Python】学习笔记——-5.1.2、高阶函数之filter
Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。例如,在一个list中,删掉偶数,只保留奇数,可以这么写:def is_odd(n): return n % 2 == 1l原创 2017-02-13 22:18:09 · 1414 阅读 · 0 评论 -
【Python】学习笔记——-5.1.1、高阶函数之map/reduce
Python内建了map()和reduce()函数。如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。我们先看map。map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果原创 2017-02-13 22:17:13 · 684 阅读 · 0 评论 -
【Python】学习笔记——-5.1、高阶函数
高阶函数英文叫Higher-order function。什么是高阶函数?我们以实际代码为例子,一步一步深入概念。变量可以指向函数以Python内置的求绝对值的函数abs()为例,调用该函数用以下代码:>>> abs(-10)10但是,如果只写abs呢?>>> absin function abs>可见,abs(-10)是函数调用,而abs是函数本身原创 2017-02-13 22:15:46 · 303 阅读 · 0 评论 -
【Python】学习笔记——-5.0、函数式编程
函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。而函数式编程(请注意多了一个“式”字)——Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算。我们首先要搞明白计算机(Comput原创 2017-02-13 22:14:13 · 396 阅读 · 0 评论 -
【Python】学习笔记——-8.6、面向对象高级编程:6.使用元类
type()动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。比方说我们要定义一个Hello的class,就写一个hello.py模块:class Hello(object): def hello(self, name='world'): print('Hello, %s.' % name)当Python原创 2017-02-23 12:37:28 · 423 阅读 · 0 评论 -
【Python】学习笔记——-8.2、面向对象高级编程:2.使用@property
在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改:s = Student()s.score = 9999这显然不合逻辑。为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,在set_score()方法里,就可以检查参数:class Student(ob原创 2017-02-23 12:32:13 · 426 阅读 · 0 评论 -
【Python】学习笔记——-6.0、模块
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。使用模块有什么好处?最大的好处是大大提高了代码的可维护性。其次,编写代码不必原创 2017-02-14 22:10:02 · 468 阅读 · 0 评论 -
【Python】学习笔记——-12、正则表达式
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的原创 2017-02-25 18:10:49 · 438 阅读 · 0 评论 -
【Python】学习笔记——-11、进程和线程
一、什么是线程、进程?很多同学都听说过,现代操作系统比如Mac OS X,UNIX,Linux,Windows等,都是支持“多任务”的操作系统。什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已原创 2017-02-25 18:07:37 · 643 阅读 · 0 评论 -
【Python】学习笔记——-10、IO编程
一、什么是IO编程IO在计算机中指Input/Output,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如你打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Outp原创 2017-02-25 17:58:32 · 1627 阅读 · 1 评论 -
【Python】学习笔记——-09、错误、调试和测试
在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理。还有一类错误是完全无法在程序运行过程中预测的,比如写入文件的时候,磁盘满了,写不进去了,或者原创 2017-02-25 17:54:26 · 1529 阅读 · 0 评论 -
【Python】学习笔记——-21、异步IO
在IO编程一节中,我们已经知道,CPU的速度远远快于磁盘、网络等IO。在一个线程中,CPU执行代码的速度极快,然而,一旦遇到IO操作,如读写文件、发送网络数据时,就需要等待IO操作完成,才能继续进行下一步操作。这种情况称为同步IO。在IO操作的过程中,当前线程被挂起,而其他需要CPU执行的代码就无法被当前线程执行了。因为一个IO操作就阻塞了当前线程,导致其他代码无法执行,所以我们必原创 2017-03-04 15:03:51 · 1237 阅读 · 0 评论 -
【Python】学习笔记——-4、Python解释器
当我们编写Python代码时,我们得到的是一个包含Python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。由于整个Python语言从规范到解释器都是开源的,所以理论上,只要水平够高,任何人都可以编写Python解释器来执行Python代码(当然难度很大)。事实上,确实存在多种Python解释器。CPython当我们从Python官原创 2017-02-03 23:01:02 · 420 阅读 · 0 评论 -
【Python】学习笔记——-20、Web开发
最早的软件都是运行在大型机上的,软件使用者通过“哑终端”登陆到大型机上去运行软件。后来随着PC机的兴起,软件开始主要运行在桌面上,而数据库这样的软件运行在服务器端,这种Client/Server模式简称CS架构。随着互联网的兴起,人们发现,CS架构不适合Web,最大的原因是Web应用程序的修改和升级非常迅速,而CS架构需要每个客户端逐个升级桌面App,因此,Browser/Server模式原创 2017-03-03 13:29:33 · 3539 阅读 · 0 评论 -
【Python】学习笔记——-Python2 和 Python3的区别
有什么区别?短版本:Python 2.x是遗留的,Python 3.x是语言的现在和未来Python 3.0于2008年发布。最终的2.x版本2.7发布于2010年年中发布,其中包含了对此生命周期发布的扩展支持声明。2.x分支将没有看到新的主要版本。3.x正在积极开发,已经有五年以上的稳定版本,包括2012年版本3.3,2014年3.4,2015年3.5和2016年3.6。这意翻译 2017-02-01 23:26:42 · 1940 阅读 · 0 评论 -
【Python】学习笔记——-3、安装Python
Python的安装其实很简单啦,因为Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Linux上也是能够运行的。要开始学习Python编程,首先就得把Python安装到你的电脑里。安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环转载 2017-02-01 23:23:31 · 1085 阅读 · 0 评论 -
【Python】学习笔记——-2、Python简介
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。如果你听说过TIOBE排行榜,你就能知道编程语言的大致流行程度。这是最近10年最常用的10种编程语言的变化图:总的来说,这几种编程语言各有千秋。C语言是可以用来编写操作系统的贴转载 2017-02-01 23:10:51 · 521 阅读 · 0 评论 -
【Python】学习笔记——-1、什么是Python?
1、什么是Python(派森)?Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。那Python是一种什么语言?首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编原创 2017-02-01 00:20:42 · 1009 阅读 · 0 评论 -
【Python】学习笔记——-6.2、使用第三方模块
在Python中,安装第三方模块,是通过包管理工具pip完成的。如果你正在使用Mac或Linux,安装pip本身这个步骤就可以跳过了。如果你正在使用Windows,请参考安装Python一节的内容,确保安装时勾选了pip和Add python.exe to Path。在命令提示符窗口下尝试运行pip,如果Windows提示未找到命令,可以重新运行安装程序添加pip。原创 2017-02-14 22:11:25 · 385 阅读 · 0 评论 -
【Python】学习笔记——-6.1、使用模块
Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。我们以内建的sys模块为例,编写一个hello的模块:#!/usr/bin/env python3# -*- coding: utf-8 -*-' a test module '__author__ = 'Michael Liao'import sysdef test(): ar原创 2017-02-14 22:10:43 · 335 阅读 · 0 评论 -
【Python】学习笔记——-7.5、实例属性和类属性
由于Python是动态语言,根据类创建的实例可以任意绑定属性。给实例绑定属性的方法是通过实例变量,或者通过self变量:class Student(object): def __init__(self, name): self.name = names = Student('Bob')s.score = 90但是,如果Student类本身需要绑定原创 2017-02-21 16:47:11 · 386 阅读 · 0 评论 -
【Python】学习笔记——-7.4、获取对象信息
当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?使用type()首先,我们来判断对象类型,使用type()函数:基本类型都可以用type()判断:>>> type(123)class 'int'>>>> type('str')class 'str'>>>> type(None)type(None) 'NoneType'>如果一个原创 2017-02-21 16:46:27 · 451 阅读 · 0 评论 -
【Python】学习笔记——-17、网络编程
自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了。计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信。网络编程就是如何在程序中实现两台计算机的通信。举个例子,当你使用浏览器访问新浪网时,你的计算机就和新浪的某台服务器通过互联网连接起来了,然后,新浪的服务器把网页内容作为数据通过互联网传输到你的电脑上。由于你的电脑上可能不止浏览器,还原创 2017-02-27 23:56:39 · 981 阅读 · 0 评论 -
【Python】学习笔记——-16、图形界面
Python支持多种图形界面的第三方库,包括:TkwxWidgetsQtGTK等等。但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用。本章简单介绍如何使用Tkinter进行GUI编程。Tkinter我们来梳理一下概念:我们编写的Python代码会调用原创 2017-02-27 23:54:48 · 789 阅读 · 0 评论 -
【Python】学习笔记——-15、virtualenv
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?这种情况下,每个应用可能需要各自拥有一套“独原创 2017-02-27 23:53:47 · 404 阅读 · 0 评论 -
【Python】学习笔记——-14、常用第三方模块
除了内建的模块外,Python还有大量的第三方模块。基本上,所有的第三方模块都会在PyPI - the Python Package Index上注册,只要找到对应的模块名字,即可用pip安装。本章介绍常用的第三方模块。PILPIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强原创 2017-02-27 23:53:13 · 668 阅读 · 0 评论 -
【Python】学习笔记——-2.4、条件判断
条件判断计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现:age = 20if age >= 18: print('your age is', age) print('adult')根据Python的缩进规则,如果if语句判断是True,就把缩进的两行prin原创 2017-02-08 23:10:21 · 796 阅读 · 0 评论 -
【Python】学习笔记——-2.5、循环
循环要计算1+2+3,我们可以直接写表达式:>>> 1 + 2 + 36要计算1+2+3+...+10,勉强也能写出来。但是,要计算1+2+3+...+10000,直接写表达式就不可能了。为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来,看原创 2017-02-08 23:11:31 · 690 阅读 · 0 评论 -
【Python】学习笔记——-2.3、使用List和Tuple
使用list和tupleListPython内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。比如,列出班里所有同学的名字,就可以用一个list表示:>>> classmates = ['Michael', 'Bob', 'Tracy']>>> classmates['Michael', 'Bob', 'Tracy'原创 2017-02-08 23:08:16 · 498 阅读 · 0 评论 -
【Python】学习笔记——-2.2、字符串和编码
字符串字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最原创 2017-02-08 23:06:36 · 483 阅读 · 0 评论