PyTips 0x17-Python 中的枚举类型

2016-04-30
阅读 2 分钟
4.6k
枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期、月份、状态等。Python 的原生类型(Built-in types)里并没有专门的枚举类型,但是我们可以通过很多方法来实现它,例如字典、类等:

PyTips 0x16 - Python 迭代器工具

2016-04-14
阅读 4 分钟
3.2k
0x01 介绍了迭代器的概念,即定义了 __iter__() 和 __next__() 方法的对象,或者通过 yield 简化定义的“可迭代对象”,而在一些函数式编程语言(见 0x02 Python 中的函数式编程)中,类似的迭代器常被用于产生特定格式的列表(或序列),这时的迭代器更像是一种数据结构而非函数(当然在一些函数式编程语言中,这两者并无...

PyTips 0x15 - Python `__future__` 模块

2016-04-12
阅读 2 分钟
3.8k
__future__ 模块由 PEP 236 提出并加入到 Python 2.1,其存在的主要原因是 Python 的版本升级经常会增加一些新的特性,而 __future__ 模块将一些新版本中将会增加的新的特性进行声明,同时使得旧版本可以使用这些新的语法特性。当然,如果你用的是 Python 2.1 以前的版本,是没办法使用 __future__ 的。__future__ 模块...

PyTips 0x14 - Python 描述符

2016-04-09
阅读 6 分钟
2.9k
项目地址:[链接] 本篇主要关于三个常用内置方法:property(),staticmethod(),classmethod() 在 Python 语言的设计中,通常的语法操作最终都会转化为方法调用,例如: {代码...} {代码...} Python 中的描述符(Descriptor)就是将对象属性的获取、赋值以及删除等行为转换为方法调用的协议: {代码...} 例如我们要获取...

PyTips 0x13 - Python 线程与协程(2)

2016-04-07
阅读 4 分钟
4.2k
我之前翻译了Python 3.5 协程原理这篇文章之后尝试用了 Tornado + Motor 模式下的协程进行异步开发,确实感受到协程所带来的好处(至少是语法上的:D)。至于协程的 async/await 语法是如何由开始的 yield 生成器一步一步上位至 Python 的 async/await 组合语句,前面那篇翻译的文章里面讲得已经非常详尽了。我们知道协程...

PyTips 0x 12 - Python 线程与协程(1)

2016-04-07
阅读 5 分钟
3.7k
要说到线程(Thread)与协程(Coroutine)似乎总是需要从并行(Parallelism)与并发(Concurrency)谈起,关于并行与并发的问题,Rob Pike 用 Golang 小地鼠烧书的例子给出了非常生动形象的说明。简单来说并行就是我们现实世界运行的样子,每个人都是独立的执行单元,各自完成自己的任务,这对应着计算机中的分布式(多...

PyTips 0x11 - Python 时间与日期

2016-03-31
阅读 4 分钟
5.1k
时间和日期可能涉及到不同的时区、格式,同时又经常需要作为时间戳保存,有时候还需要进行一些加减操作,因此处理起来通常会因为方法太多而无从下手。Python 中与时间和日期相关的标准库有3个:time、datetime 和 calendar。其中 time 模块更偏向于系统相关的时间数据,最常用的可能就是获取当前时间的秒数 time.time()...

PyTips 0x10 - Python 的堆与优先队列

2016-03-29
阅读 3 分钟
7.2k
Python 中内置的 heapq 库和 queue 分别提供了堆和优先队列结构,其中优先队列 queue.PriorityQueue 本身也是基于 heapq 实现的,因此我们这次重点看一下 heapq。

PyTips 0x0f - Python 修饰器与 functools

2016-03-25
阅读 5 分钟
4k
项目地址:[链接] Python 的修饰器是一种语法糖(Syntactic Sugar),也就是说: {代码...} 是下面语法的一种简写: {代码...} 关于修饰器的两个主要问题: 修饰器用来修饰谁 谁可以作为修饰器 修饰函数 修饰器最常见的用法是修饰新定义的函数,在 0x0d 上下文管理器中提到上下文管理器主要是为了更优雅地完成善后工作,...

PyTips 0x0e - Python 内置排序方法

2016-03-24
阅读 3 分钟
5.6k
Python 提供两种内置排序方法,一个是只针对 List 的原地(in-place)排序方法 list.sort(),另一个是针对所有可迭代对象的非原地排序方法 sorted()。

PyTips 0x0d - Python 上下文管理器

2016-03-23
阅读 3 分钟
3.6k
项目地址:[链接] Python 2.5 引入了 with 语句(PEP 343)与上下文管理器类型(Context Manager Types),其主要作用包括: 保存、重置各种全局状态,锁住或解锁资源,关闭打开的文件等。With Statement Context Managers 一种最普遍的用法是对文件的操作: {代码...} {代码...} 上面的例子也可以用 try...finally... ...

PyTips 0x0c - Python 知之深浅

2016-03-22
阅读 2 分钟
3.3k
Python 中的对象分为两种:可变对象(mutable)和不可变对象(immutable)。不可变对象包括int,float,long,str,tuple等,可变对象包括list,set,dict等。在 Python 中,赋值(assignment, =)的过程仅仅是:

PyTips 0x0b - Python 无处不在的else

2016-03-21
阅读 3 分钟
3.1k
我们都知道 Python 中 else 的基本用法是在条件控制语句中的 if...elif...else...,但是 else 还有两个其它的用途,一是用于循环的结尾,另一个是用在错误处理的 try 中。这原本是 Python 的标准语法,但由于和大部分其它编程语言的习惯不太一样,致使人们有意或无意地忽略了这些用法。另外,对于这些用法是否符合 0x00 ...

PyTips 0x0a - Python 字符串的格式化

2016-03-18
阅读 4 分钟
5.7k
相信很多人在格式化字符串的时候都用"%s" % v的语法,PEP 3101 提出一种更先进的格式化方法 str.format() 并成为 Python 3 的标准用来替换旧的 %s 格式化语法,CPython 从 2.6 开始已经实现了这一方法(其它解释器未考证)。

PyTips 0x09 - Python 中 Unicode 的正确用法

2016-03-17
阅读 4 分钟
48.6k
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte

PyTips 0x08 - Python 字节与字节数组

2016-03-16
阅读 3 分钟
11.1k
0x07 中介绍了 Python 中的字符串类型,字符串类型是对人类友好的符号,但计算机只认识一种符号,那就是二进制(binary)数,或者说是数字:

PyTips 0x07 - Python 字符串

2016-03-16
阅读 3 分钟
3.9k
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) UnicodeDecodeError: 'utf-8' codec can't decode bytes in position 0-1: invalid continuation byte

PyTips 0x06 - Python 开发命令行工具

2016-03-14
阅读 4 分钟
4.2k
Python 作为一种脚本语言,可以非常方便地用于系统(尤其是*nix系统)命令行工具的开发。Python 自身也集成了一些标准库,专门用于处理命令行相关的问题。

PyTips 0x05 - Python 函数参数与解包

2016-03-11
阅读 2 分钟
6.5k
项目地址:[链接] 函数调用的参数规则与解包 Python 的函数在声明参数时大概有下面 4 种形式: 不带默认值的:def func(a): pass 带有默认值的:def func(a, b = 1): pass 任意位置参数:def func(a, b = 1, *c): pass 任意键值参数:def func(a, b = 1, *c, **d): pass 在调用函数时,有两种情况: 没有关键词的参数:f...

PyTips 0x04 - Python 闭包与作用域

2016-03-10
阅读 3 分钟
4k
在计算机科学中,闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。[维基百科::闭包(计算机科学)]

PyTips 0x03 - Python 列表推导

2016-03-09
阅读 2 分钟
3.4k
0x02 中提到的 map/filter 方法可以通过简化的语法快速构建我们需要的列表(或其它可迭代对象),与它们功能相似的,Python 还提供列表推导(List Comprehension)的语法。最初学 Python 的时候,我只是把这种语法当做一种语法糖,可以用来快速构建特定的列表,后来学习 Haskell 的时候才知道这种形式叫做 List Comprehe...

PyTips 0x02 - Python 中的函数式编程

2016-03-09
阅读 2 分钟
3.9k
函数式编程(英语:functional programming)或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。(维基百科:函数式编程)

PyTips 0x01 - 迭代器与生成器

2016-03-09
阅读 2 分钟
2.9k
迭代器(iterator)与生成器(generator)是 Python 中比较常用又很容易混淆的两个概念,今天就把它们梳理一遍,并举一些常用的例子。

PyTips 0x00 - Python 之禅与 Pythonic

2016-03-08
阅读 2 分钟
3.3k
Python 之禅是 Python 语言的设计哲学与所倡导的编程理念,Pythonic 则是指基于 Python 理念编写更加符合 Python 语法习惯(idiomatic Python)的代码,这也是本项目所追求的目标,因此以本篇作为开头。

D-Day 杭州一日行程记录

2015-05-30
阅读 2 分钟
3.3k
[链接] 今天去了 segmentfault 的 D-Day 杭州,三周年技术大会,简单记录一下一天的行程与收获。 这次来报名参加主要是奔着移动开发跟 react 相关的报告去的,最近前端果然是炙手可热,下午前端分会场直接爆满挤都挤不进去。 首先说会场设施安排,好歹也是收了102.4的报名费,现场不但不提供WIFI,而且到处都是各种传单...