Python概览
2018 年 8 月 29 日
Python概览
- Python概览
- 推荐的项目结构
- 包安装 pip工具
- 多版本管理pyenv
- 干净的应用环境virtualenv
- 代码风格
- 单元测试
- 自动文档化 Sphinx
- 应用介绍
- 推荐学习
- 比较好用的库推荐
- 建议掌握好的几个概念
- 标准库
print("Hello, Welcome to Python's world")
欢迎进入Python的世界,第一件事请习惯,我们不用{}, 我们用缩进。
用缩进的请注意,空格和tab不能混用。 注意到了这个,你就能避免下面的错误
IndentationError: unexpected indent
推荐的项目结构
作者开发了知名的flask轻量级web框架和requests库。
python代码组织结构
package/module/变量。
package是指带有__init__.py
的目录, 当被首次被import和reload 的时候__init__.py
会执行,
包安装 pip工具
pip install package
pip freeze > requestments.txt
pip install -r requestments.txt
一般是和virtualenv结合起来用的。
多版本管理pyenv
pyenv vertions 列出当前安装的版本
pyenv install version 安装指定的版本
pyenv global version 设置全局的python版本
Python 多版本共存之 pyenv
干净的应用环境virtualenv
virtualenv venv
virtualenv venv -p 指定python版本
source venv/bin/active
deactive
Python虚拟环境virtualenv
代码风格
PEP8 标准
pycodestyle 检测是否符合标准
pycodestyle yourscript.py
autopep8 可以自动替换成符合标准的格式
autopep8 --in-place yourscript.py
单元测试
- nose包, 安装后有nosetests命令
nosetests -v
- unittest
python -m unittest module_name
- doctest 这个是更多是用在演示api如何使用的。 也可能通过doctest模块运行,如果文档的值和实际的值不一样,就会报错误。
- pytest unittest的可替代品
- tox 在需要多版本兼容时,可以用tox做自动化测试
- mock Python单元测试 #效率问题 Python专题之性能与优化
自动文档化 Sphinx
应用介绍
web方向
Django
Flask
Tornado
Pyramid
Twisted
运维方向
fabric
运维管理工具fabric详解
ansible
puppet
大数据方向
机器学习方向
推荐学习
- 入门级 可以廖雪峰的教程。
- 深入语法 可以学<Python学习手册>。
- 整体感知可以看下<Python高手之路>.
- web开发可以学
比较好用的库推荐
运维管理 psutils
黑客攻防
ORM SQLAlchemy
requests 库, http请求库
logging模块,标准日志
建议掌握好的几个概念
装饰器
def foo():
# do something
def decorator(func):
# manipulate func
return func
foo = decorator(foo) #手动装饰
@decorator
def bar():
# Do someting
# bar() is decorated
上下文管理 context manager
函数式编程
标准库
下面是一些必须了解的标准库模块。
- abc 提供抽象基类等功能。
- atexit 允许注册在程序退出时调用的函数
- argparse 提供解析命令行参数的函数。
- bisect 为可排序列表提供二分查找算法。
- calendar 提供一组与日期相关的函数。
- codecs 提供编解码数据的函数。
- collections 提供一组有用的数据结构。
- copy 提供复制数据的函数。
- csv 提供读写CSV文件的函数。
- datetime 提供用于处理日期和时间的类。
- fnmatch 提供用于匹配Unix风格文件名模式的函数。
- glob 提供用于匹配Unix风格路径模式的函数。
- io 提供用于处理I/O流的函数。
- json 提供用来读写JSON格式函数的函数。
- logging 提供对Python内置的日志功能的访问。可以参考这里
- multiprocessing 可以在应用程序中运行多个子进程。可以参考这里
- operator 提供实现基本的Python运算符功能的函数,可以使用这些函数而不是自己写lambda表达式。
- os 提供对基本的操作系统函数的访问。
- random 提供生成伪随机数的函数。。不能用在安全领域。
- re 提供正则表达式功能。
- select 提供对函数select()和poll()的访问,用于创建事件循环。
- shutil 提供对高级文件处理函数的访问。
- signal 提供用于处理POSIX信号的函数。可以参考这里
- tempfile 提供用于创建临时文件和目录的函数。可以参考这里
- threading 提供对处理高级线程功能的访问。可以参考这里
- urllib(以及Python2.x中的urllib2和urlparse)提供处理和解析URL的函数。
- uuid可以生成全局唯一标识符。