Python开发学习过程中的资料汇总

学习资源介绍

这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护。内容包括:Web框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。

伯乐在线已在 GitHub 上发起「Python 资源大全中文版」的整理。欢迎扩散、欢迎加入。

GitHub - jobbole/awesome-python-cn: Python资源大全中文版**

Python 资源大全中文版

[TOC]

###基本语法

参考网页字典

语法介绍

string模块,还提供了很多方法,如

S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1 S.rfind(substring,[start [,end]]) #反向查找 S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常 S.rindex(substring,[start [,end]])#同上反向查找 S.count(substring,[start [,end]]) #返回找到子串的个数

S.lowercase() S.capitalize() #首字母大写 S.lower() #转小写 S.upper() #转大写 S.swapcase() #大小写互换

S.split(str, ‘ ‘) #将string转list,以空格切分 S.join(list, ‘ ‘) #将list转string,以空格连接

str = ’0123456789′
print str[0:3] #截取第一位到第三位的字符

处理字符串的内置函数 len(str) #串长度 cmp(“my friend”, str) #字符串比较。第一个大,返回1 max(‘abcxyz’) #寻找字符串中最大的字符 min(‘abcxyz’) #寻找字符串中最小的字符

string的转换

oat(str) #变成浮点数,float(“1e-1″) 结果为0.1 int(str) #变成整型, int(“12″) 结果为12 int(str,base) #变成base进制整型数,int(“11″,2) 结果为2 long(str) #变成长整型, long(str,base) #变成base进制长整型

python数组的使用
Python的数组分三种类型:

(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。 定义方式:arr = [元素]

(2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。 定义方式:arr = (元素)

(2) Dictionary 词典类型, 即是Hash数组。 定义方式:arr = {元素k:v}

** 下面具体说明这些数组的使用方法和技巧:**

######list 链表数组** a、定义时初始化 a = [1,2,[1,2,3]]

b、定义时不初始化 一维数组: arr = []

多维数组: arr = [i for i in range(3), 1,[]] #注意, i for in xx 这个必须放在第一个位置,否则要先定义i, arr = [[0,1,2],1,[]]

如: arr = [i for i in range(5), j for j in range(5), []] 这是错误的 i = 0 j = 0 arr = [i for i in range(5), j for j in range(5), []] 这是正确的(需要初始化i、j)

c、del 语句 和 : 的用法 可以用 start : end 表示数组里的一个区间 ( i >= start and i < end) del 删除数组里的指定元素 如: del arr[0] del arr[0, 2] newarr = arr[0, 2]

d、遍历数组: for k, v in enumerate(arr): print k, v

e、增加元素: 一维 arr.append(‘aaa’) 二维 arr[0].append(‘aaa’) 如果要在任意位置插入用 arr.insert(n, 值) 此外还有一种特殊的用法是: arr += [数组元素] 在不指定下标的情况下,是允许用 += 增加数组元素的。

Tuple 没有的方法: [1] 不能向 tuple 增加元素,没有 append 、 extend 、insert 等方法。 [2] 不能从 tuple 删除元素,没有 remove 或 pop 方法。 [3] 不能在 tuple 中查找元素,没有 index 方法(index是查找而不是索引,索引直接用下标即可,如:t[0])。

使用 tuple 的好处: * Tuple 比 list 操作速度快。如果您定义了一个值的常量集, 并且唯一要用它做的是不断地遍历它, 请使用 tuple 代替 list。 * 如果对不需要修改的数据进行 “写保护”, 可以使代码更安全。使用 tuple 而不是 list 如同拥有一个隐含的 assert 语句, 说明这一数据是常量。如果必须要改变这些值, 则需要执行 tuple 到 list 的转换 (需要使用一个特殊的函数)。 * 还记得我说过 dictionary keys 可以是字符串, 整数和 “其它几种类型”吗? Tuples 就是这些类型之一。 Tuples 可以在 dictionary 中被用做 key, 但是 list 不行。实际上, 事情要比这更复杂。Dictionary key 必须是不可变的。Tuple 本身是不可改变的, 但是如果您有一个 list 的 tuple, 那就认为是可变的了, 用做 dictionary key 就是不安全的。只有字符串, 整数或其它对 dictionary 安全的 tuple 才可以用作 dictionary key。

Tuple 可以转换成 list, 反之亦然。 转换方式为: t = list( t ) 反之: arr = tuple( arr )

Dictionary (哈希数组)词典数组**

#Dictionary 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明: #下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。 dict_arr = {‘a’: 100, ‘b’:‘boy’, ‘c’:[‘o’, ‘p’, ‘q’]}

#可以直接增加一个元素,如果同名,则会改变原来的key的元素的值 dict_arr[’d’] = ‘dog’

#输出所有的key print dict_arr.keys()

#输出所有的value print dict_arr.values()

#遍历数组 for k in dict_arr:   v = dict_arr.get(k)

list的方法 L.append(var) #追加元素 L.insert(index,var) L.pop(var) #返回最后一个元素,并从list中删除之 L.remove(var) #删除第一次出现的该元素 L.count(var) #该元素在列表中出现的个数 L.index(var) #该元素的位置,无则抛异常 L.extend(list) #追加list,即合并list到L上 L.sort() #排序 L.reverse() #倒序 list 操作符:,+,*,关键字del a[1:] #片段操作符,用于子list的提取 [1,2]+[3,4] #为[1,2,3,4]。同extend() [2]*4 #为[2,2,2,2] del L[1] #删除指定下标的元素 del L[1:3] #删除指定下标范围的元素 list的复制 L1 = L #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的 L1 = L[:] #L1为L的克隆,即另一个拷贝。

list comprehension [ for k in L if ]

######dictionary: 字典(即C++标准库的map)** dict = {‘ob1′:’computer’, ‘ob2′:’mouse’, ‘ob3′:’printer’} 每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。 键是唯一的,字典只认最后一个赋的键值。

dictionary的方法 D.get(key, 0) #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常 D.has_key(key) #有该键返回TRUE,否则FALSE D.keys() #返回字典键的列表 D.values() D.items()

D.update(dict2) #增加合并字典 D.popitem() #得到一个pair,并从字典中删除它。已空则抛异常 D.clear() #清空字典,同del dict D.copy() #拷贝字典 D.cmp(dict1,dict2) #比较字典,(优先级为元素个数、键大小、键值大小) #第一个大返回1,小返回-1,一样返回0

dictionary的复制 dict1 = dict #别名 dict2=dict.copy() #克隆,即另一个拷贝。

环境管理

管理 Python 版本和环境的工具

Python打包分发工具

setuptools工具。

  \#coding:utf8

  from setuptools import setup

  setup(
       name='MyApp',         # 应用名
       version='1.0',        # 版本号
       packages=['myapp']    # 包括在安装包内的Python包
  )
  python setup.py bdist_egg
  python setup.py sdist --formats=gztar
   python setup.py install

开发方式安装:

  python setup.py develop

包管理

管理包和依赖的工具。

包仓库

本地 PyPI 仓库服务和代理。

分发

打包为可执行文件以便分发。

构建工具

将源码编译成软件。

交互式解析器

交互式 Python 解析器。

文件

文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。

日期和时间

操作日期和时间的类库。

文本处理

用于解析和操作文本的库。

特殊文本格式处理

一些用来解析和操作特殊文本格式的库。

自然语言处理

用来处理人类语言的库。

文档

用以生成项目文档的库。

配置

用来保存和解析配置的库。

命令行工具

用于创建命令行程序的库。

下载器

用来进行下载的库.

图像处理

用来操作图像的库.

OCR

光学字符识别库。

音频

用来操作音频的库

Video

用来操作视频和GIF的库。

地理位置

地理编码地址以及用来处理经纬度的库。

HTTP

使用HTTP的库。

数据库

Python实现的数据库。

数据库驱动

用来连接和操作数据库的库。

ORM

实现对象关系映射或数据映射技术的库。

Web 框架

全栈 Web 框架。

权限

允许或拒绝用户访问数据或功能的库。

CMS

内容管理系统

电子商务

用于电子商务以及支付的框架和库。

RESTful API

用来开发RESTful APIs的库

验证

实现验证方案的库。

模板引擎

模板生成和词法解析的库和工具。

Queue

处理事件以及任务队列的库。

搜索

对数据进行索引和执行搜索查询的库和软件。

动态消息

用来创建用户活动的库。

资源管理

管理、压缩、缩小网站资源的工具。

缓存

缓存数据的库。

电子邮件

用来发送和解析电子邮件的库。

国际化

用来进行国际化的库。

URL处理

解析URLs的库

HTML处理

处理 HTML和XML的库。

爬取网络站点的库

网页内容提取

用于进行网页内容提取的库。

表单

进行表单操作的库。

数据验证

数据验证库。多用于表单验证。

反垃圾技术

帮助你和电子垃圾进行战斗的库。

标记

用来进行标记的库。

管理面板

管理界面库。

静态站点生成器

静态站点生成器是一个软件,它把文本和模板作为输入,然后输出HTML文件。

进程

操作系统进程启动及通信库。

并发和并行

用以进行并发和并行操作的库。

网络

用于网络编程的库。

WebSocket

帮助使用WebSocket的库。

WSGI 服务器

兼容 WSGI 的 web 服务器

RPC 服务器

兼容 RPC 的服务器。

密码学

图形用户界面

用来创建图形用户界面程序的库。

游戏开发

超赞的游戏开发库。

日志

用来生成和操作日志的库。

Testing

进行代码库测试和生成测试数据的库。

代码分析和Lint工具

进行代码分析,解析和操作代码库的库和工具。

Debugging Tools

用来进行代码调试的库。

Science and Data Analysis

用来进行科学计算和数据分析的库。

数据可视化

进行数据可视化的库。 参见: awesome-javascript

计算机视觉

计算机视觉库。

机器学习

机器学习库。 参见: awesome-machine-learning.

MapReduce

MapReduce 框架和库。

函数式编程

使用 Python 进行函数式编程。

第三方 API

用来访问第三方 API的库。 参见: List of Python API Wrappers and Libraries

DevOps 工具

用于 DevOps 的软件和库。

任务调度

任务调度库。

外来函数接口

使用外来函数接口的库。

高性能

让 Python 更快的库。

微软的 Windows平台

在 Windows 平台上进行 Python 编程。

网络可视化和SDN

用来进行网络可视化和SDN(软件定义网络)的工具和库。

硬件

用来对硬件进行编程的库。

兼容性

帮助从 Python 2 向 Python 3迁移的库。

杂项

不属于上面任何一个类别,但是非常有用的库。

算法和设计模式

Python 实现的算法和设计模式。

编辑器插件

编辑器和 IDE 的插件

集成开发环境

流行的 Python 集成开发环境。

自动聊天工具

用于开发聊天机器人的库

服务

在线工具和简化开发的 API 。

持续集成

参见: awesome-CIandCD.

代码质量

资源

在这里可以找到新的 Python 库。

网站

周刊

Twitter

学习指南

知名网站

值得关注的 Python 技术站点。

中文站点

英文站点