Python

以后就玩Python了。交流QQ群:250329766

Python专题之扩展与架构

一个应用程序的可扩展性、并发性和并行性在很大程度上取决于它的初始架构和设计的选择。如你所见,有一些范例(如多线程)在Python中被误用,而其他一些技术(如面向服务架构)可以产生更好的效果。

Python专题之性能与优化

Python慢是大家都知道的,他释放的人的生产力问题。 但是通过正确的使用Python,也是可以提高效率的。

Python抽象语法树

抽象语法树(Abstract Syntax Tree, AST)是任何语言源代码的抽象结构的树状表示,包括Python语言。 作为Python自己的抽象语法树,它是基于对Python源文件的解析而构建的。

Python 多版本共存之 pyenv

经常遇到这样的情况: 系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性; 系统自带的 Python 是 2.x,自己需要 Python 3.x; 此时需要在系统中安装多个 Python,但又不能影响系统自带的 Python,即需要实现 Python 的多版本共存。pyenv 就是这样一个 Python 版本管理器。

Python函数式编程

函数式编程具有以下实用的特点。 可形式化证明。 模块化。模块化编码能够在一定程度上强制对问题进行分治解决并简化在其他场景下的重用。 简洁。 函数式编程通常比其他范型更为简洁。 并发。 纯函数式函数是线程安全的并且可以并行运行。 可测性。测试一个函数式程序是非常简单的:所有需要做的仅仅是一组输入和一组期望的输出。而且是幂等的。

Python方法和装饰器

装饰器真的很重要,再怎么强调都不为过。

Python单元测试

因为Python是动态语言。非常动态,不写单元测试真心没法确认自己的代码是正确的。 即使有单元测试,也只证实测试过的代码是可靠的。本文就是来系统介绍下Python中的单元测试。

Mock 在 Python 单元测试中的使用

很多时候,我们编写的软件会直接与那些被标记为“垃圾”的服务交互。用外行人的话说:服务对我们的应用程序很重要,但是我们想要的是交互,而不是那些不想要的副作用,这里的“不想要”是在自动化测试运行的语境中说的。例如:我们正在写一个社交 app,并且想要测试一下 "发布到 Facebook" 的新功能,但是不想每次运行测试集的时候真的发布到 Facebook。 Python 的 unittest 库包含了一个名为 unittest.mock 或者可以称之为依赖的子包,简称为 mock —— 其提供了极其强大和有用的方法,通过它们可以模拟mock并去除那些我们不希望的副作用。

Python虚拟环境virtualenv

实际工作中会遇到这样的问题。 1是安装了多个python版本。因为在python2.x和python3.x同时存在的时代,有应用只支持到python2.x,有应用用的新的python3.x。这不可避免。针对这个已经有了pyenv做这个事,管理多个python版本。 但同时还有一种情况,同一服务器上多个应用用到了同一个包的多个版本。怎么办呢? 如果都装到系统目录,显然是不可行的。virtualenv就正是处理这个问题的。 他为python提供独立的虚拟环境。

Python包管理工具setuptools详解

setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建的包时,并不需要已安装setuptools,只要一个启动模块即可。 功能亮点: 利用EasyInstall自动查找、下载、安装、升级依赖包 创建Python Eggs 包含包目录内的数据文件 自动包含包目录内的所有的包,而不用在setup.py中列举 自动包含包内和发布有关的所有相关文件,而不用创建一个MANIFEST.in文件 自动生成经过包装的脚本或Windows执行文件 支持Pyrex,即在可以setup.py中列出.pyx文件,而最终用户无须安装Pyrex 支持上传到PyPI 可以部署开发模式,使项目在sys.path中 用新命令或setup()参数扩展distutils,为多个项目发布/重用扩展 在项目setup()中简单声明entry points,创建可以自动发现扩展的应用和框架 总之,setuptools就是比distutils好用的多,基本满足大型项目的安装和发布