3 python开发风格与建议

14
Python Python 开开开开开开开开 开开开开开开开开 开开开开 开开开开开开 开开开 、一 开开开开 开开开开开开 开开开 、一 Kingsoft KSO

Upload: march-liu

Post on 31-May-2015

1.979 views

Category:

Documents


0 download

DESCRIPTION

Python 开发中一些值得关注的语法、框架、设计思想

TRANSCRIPT

Page 1: 3 Python开发风格与建议

Python Python 开发的风格与建议开发的风格与建议

编码风格、技术选择与一些建议编码风格、技术选择与一些建议

Kingsoft KSO

Page 2: 3 Python开发风格与建议

Python 编码的一些惯例

• 使用四空格而非 tab 缩进• 为函数和类编写 docstring• 尽可能使用 utf8• import this...• 管理好命名• 善用语法糖

Kingsoft KSO

Page 3: 3 Python开发风格与建议

一些好用的语法糖

• 隐式拆装– a, b = b, a

• 列表推导– [diff(x, y) for x, y in box if x<y]– d = dict((x, y) for x, y in box if x<y)

• str.join– ', '.join(['a', 'b', 'c'])

• 生成器 yield– 线性迭代逻辑

• 修饰– 实现业务正交分解

Kingsoft KSO

Page 4: 3 Python开发风格与建议

Pythonic 是什么?

追求简单、易读的编码风格。使用轻而浅层的代码组织。善用文档和测试功能。工作过程自动化。重视文档。

Kingsoft KSO

Page 5: 3 Python开发风格与建议

选择 Python ,使用 Python

现代软件开发,编程语言的选择,包括了语言的运行时和语言的选择。

用好一门语言,要了解和运用好它的语法,也同样要能掌控它的运行时。

灵活运用知识和技术,不拘泥于某一种模式。在全局高度设计架构,跳出框架限制。

Kingsoft KSO

Page 6: 3 Python开发风格与建议

常见 Web 框架

• Django• webpy• zope• turbogears• pylons• web2py• tornado• ...

Kingsoft KSO

Page 7: 3 Python开发风格与建议

Web 框架选择

Web 框架的选择,通常应该基于应用的特色、框架的社区活跃程度、文档、扩展性。

• 每一个框架都声称自己够快。• 最快的不一定是最好用的,甚至不一定是“最快

的”。• 最“易用”的同样未必是最易用的。• 能否与前端的应用服务器和后端的存储层灵活高

效的结果,是非常重要的指标。

Kingsoft KSO

Page 8: 3 Python开发风格与建议

ORM 的争议

ORM 的水准取决于三个方向:连接池、建模能力、SQL 生成能力。

不需要追求最强的通用性,因为在实际工作中,最难迁移的就是数据库。

ORM 不一定慢,专业的 ORM 工具可以生成很高质量的 SQL ,并且可能拥有非常好的连接池机制。

好的 ORM 可以帮助我们更好的建立具有伸缩能力的存储层,控制事务,提高代码的可维护性。

好的 ORM 本身应该具有足够的弹性,允许我们穿透封装,直接使用底层的功能。

Kingsoft KSO

Page 9: 3 Python开发风格与建议

ORM 的争议

ORM 很可能会给开发带来负作用• 糟糕的连接池……– storm

• 糟糕的建模机制……– storm– web2py dal

• 糟糕的 SQL 生成机制……– web2py dal

Kingsoft KSO

Page 10: 3 Python开发风格与建议

唯一推荐的 Python ORM!

SQLAlchemy 是 Python 平台上最为优秀的 ORM 框架,在我心目中这是一个全能的强大工具

• 建模能力强,可以在应用层建立分布式存储• 广泛支持所有主流数据库,对各自的特殊特性支持很好

• SQL 生成机制非常好,复杂查询也可以生成高质量代码

• 内置成熟的连接池• 对日志和调试友好• Pythonic

Kingsoft KSO

Page 11: 3 Python开发风格与建议

测试驱动开发?

积极使用 doctest 和 unit test ,可以有效控制代码质量。

开发人员额外编写测试代码,确实会付出一定时间 ,但是对于一定复杂度以上的程序,确实是值得的。

好的代码组织应该能更方便的测试

Kingsoft KSO

Page 12: 3 Python开发风格与建议

一些野生程序的山寨体悟

• 代码即文档– docstring + 注释 + 高可读性的代码

• 测试即设计– 编写测试代码不仅为了测试,也帮助理清设计的思路

• 享受动态类型– 不追求“严谨”的重型设计,将安全保护放在运行时边界

• 面向数据结构编程• 掌握文本处理技术– 行文本– 正则– 管道 ...

Kingsoft KSO

Page 13: 3 Python开发风格与建议

一些野生程序的山寨体悟

• 运行时的架构比开发时的代码组织重要• 运行时接口比开发时接口重要• 在 Python 中慎用多线程• 熟悉 Python 的组件,用好互联网资源

Page 14: 3 Python开发风格与建议

刘鑫

[email protected]

Kingsoft KSO