python教程

2017-06-26  本文已影响11人  交流电1582

基础

环境

实践: hello, world

类型

结构

实践: Guess the number/with feedback

函数

实践: fibonacci/memorized

小技巧

作用域规则(scoping)

实践: 24 game

面对对象

实践:

异常

实践: 异常重定向

模块

实践: dynamic plugin modules

闭包和对象类的联系

class Out(object):
    def __init__(self, a, b, c):
        self.a, self.b, self.c = a, b, c
    def __call__(self):
        use self.a, self.b, self.c
        return xxx

装饰器注册

class Reg(object):
    def __init__(self):
        d = {}
    def register(self, path):
        def inner(f):
            self.d[path] = f
            return f
        return inner

reg = Reg()

@reg.register('/abc/')
def action1():
    pass

反模式

函数默认值

函数的默认值,在同一个函数内是同一个。不要用可变值作为默认值。

def sumobj(l=None):
    if l is None: l = []
    return reduce(lambda x, y: x+y, l)

局部变量定义

在内层中后定义的对象会导致先使用的对象出错,尤其在全局有同名变量时,这容易产生混淆。

a = 1
def func():
    print a
    a = 2

更具有迷惑性的例子:

a = 1
def func():
    if True: print a
    else: a = 2

battery inside

内置模块

实践: getopt

文件系统

实践: find duplicate files

第三方模块

高级特性

测试

示例:

调试

过滤和映射

列表推导和循环隐含假定不可并发,函数式隐含假定可并发。

过滤装饰器

结合生成器流和过滤的手法。

def filterxxx(list):
    for i in list:
        if filter(i): continue
        i = map(i)
        yield i
for i in filterxxx(source):
    do i

优点是很容易写出多层过滤正交。

实践: find duplicate files/insertable functions

网络

底层协议

实践: ping-echo server(tcp and udp mode)

应用层协议

代码风格

过程式风格

面对对象风格

要点

函数式风格

要点

结合多种风格

哲学

duck typing

POLA

the principle of least astonishment

错误处理

上一篇 下一篇

猜你喜欢

热点阅读