python总结
环境:django,numpy,matplotlib,
解释语言:开发效率高,通用性强,内置方便的数据容器,易于扩展和嵌入。
语言:lua--嵌入式/网络/APP,erlang--嵌入式,python--网络/嵌入式,lisp--界面。
程序员境界:线性级,逻辑级,架构级,工程级
程序员陋习:自我,封闭,惯性,沟通障碍,一叶障目,工作量估计乐观,拒绝变化,拒绝重构。
笛卡尔方法论:拆分,排序,处理,归并。
项目管理:计划,组织,执行,控制。
数据类型:数值,字符串,纯性容器(list,tuple),hash容器(dict,set), none, 逻辑类型。
一个物理行使用多个逻辑行时用分号分开。
缩进:同层次语句相同缩进,不要混合使用空白和制表符,不同平台无法工作,建议一律使用4个空格。
lamda表达式,
函数:关键参数,文档字符串,闭包。
eval()
repr()
面向对象:类的实例化,类的封装,专用类,类属性,私有函数。
封装继承多态。
类的初始化:
Class a:
def __init__(self):
self.m=1
类的实例化:
c=a()
c.__class__
c.__doc__
type(c)
str(c)
与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字。如果一个 Python 函数,类方法,或属性的名字以两个下划线开始(但不是结束),它是私有的;其它所有的都是公有的。
try-except处理:
我们把所有可能引发错误的语句放在try
块中,然后在except
从句/块中处理所有的错误和异常。except
从句可以专门处理单一的错误或异常,或者一组包括在圆括号内的错误/异常。如果没有给出错误或异常的名称,它会处理 所有的 错误和异常。对于每个try
从句,至少都有一个相关联的except
从句。
你还可以让try..catch
块关联上一个else
从句。当没有异常发生的时候,else
从句将被执行。
模块与包:__init__.py,
文件操作:open,write,read,readlines,seek,os.listdir,os.walk。
python内置容器
1) 列表 List
定义
访问
切片操作
嵌套
内置函数
2) 元组 Tuple
定义
类似list的访问方式
不可变对象
类型转换
隐式tuple调用
数据交换
拆封与解封
3) 字典 Dict
字典的声明
简单使用
keys()和values()
排序问题及解决
4) 集合 Set
定义方式
set--唯一集合
演示合并功能
类型转换
5) map,reduce ,filter
6) 迭代器与生成器,协同和半协同:yield
并行的世界
n 串行与并行
n 阻塞与非阻塞任务
n 共享与冲突
n 多线程与多进程的区别和特点
多进程
n Linux、unix平台专属
n Fork
n wait
n Waitpid
n pipe和singal
n 守护进程
多线程
n Thread
n Threading
n 共享变量与临界资源
n 锁机制
python正则表达式
n 正则表达式的使用
n re.compile()
n 正则表达式介绍
n 贪婪模式和非贪婪模式
n re模块的其他工具
表达式对象:match,find,search。
元字符
一般字符
.除换行符的任意字符 DOTALL
\ 转义字符
[...] 字符集合
\d 数字:[0-9]
\D 非数字[^0-9]
\s 空白字符[<空格>\t\r\n\f\n]
\S 非空白字符[^\s]
\w 单词字符[A-Za-z0-9_]
\W 非单词字符[^\w]
匹配前一个字符0或者多次
+ 匹配前一个字符1次或者多次
? 匹配前一个字符0次或者1次
{m} 匹配前一个字符m次
{m,n} 匹配前一个字符m至n次
数量词? 变成非贪婪模式
边界
^ 匹配字符串开头,多行匹配每一行开头
$ 匹配字符串末尾,多行匹配每一行末尾
\A 仅匹配字符串开头
\Z 仅匹配字符串末尾
\b 匹配\w 和 \W 之间
逻辑、分组
| 左右表达式任意匹配一个, 先匹配左边一旦成功则跳过匹配右边,如果|没有包含在()中,匹配整个正则表达式
(...) 分组匹配,从左到右,每遇到一个 ( 编号+1 分组后面可加数量词
(?P<name>...) 除了分组序号外,指定一个 name的别名
\<number> 引用编号为<number>的分组匹配到的字符串
(?P=name) 引用别名为<name>的分组匹配到的串
特殊构造
(?:...) (...)不分组版本,用于使用 | 或者后接数量词
(?iLmsux) iLmsux的每个字符代表一个匹配模式,只能用在正则表达式的开头,可选多个
(?#...) #号后的内容将作为注释
(?=...) 之后的字符串内容需要匹配表达式才能成功匹配
(?!...) 之后的字符串不匹配表达式才能成功
(?<=...) 之前的字符串需要匹配表达式才能成功
(?<!...) 之前的字符串需要不匹配表达式才能成功
(?(id/name) yes |no) 如果编号为id/名字为name的组匹配到字符串,则需要匹配yes,否则匹配no,no可以省略
iLmsux
I re.I 忽略大小写
L re.L 使用预定字符类 \w \W \b \B \s \S 取决当前区域设定
m re.M 多行模式改变^ 和 $ 的行为
s re.S . 任意匹配模式
u re.U 使用预定字符类 \w \W \b \B \s \S \d \D 取决unicode定义的字符属性
x re.X 详细模式,可以多行,忽略空白字符,并且可以加入注释
re:
n re.compile(strPattern[, flag])
n pattern
n match
n search
n split
n findall
n finditer
n sub
Socket开发服务端
import socket
HOST = '127.0.0.1'
PORT =27001
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((HOST,PORT))
s.listen(2)
conn,addr = s.accept()
print 'Connect by ',addr
while 1:
data = conn.recv(1024)
print data
if not data :break
conn.send(data)
conn.close()
socket开发客户端
import socket
HOST ='127.0.0.1'
PORT = 27001
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((HOST,PORT))
s.send("hello")
data = s.recv(1024)
print repr(data)
s.close()
socket高级应用(非阻塞)
n select 通过select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作。 缺点在于单个进程能够监视的文件描述符的数量存在最大限制,linux默认1024。文件描述符数量的增大,其复制的开销也线性增长。
n poll 同select类似,但没有文件描述符的限制
n epoll 内核直接支持,基于事件就绪,注册和call back
django网站 的安装与配置
n easy_install django
n python setup.py install
n django_admin.py
n manager.py settings.py urls.py
MTV模式
n MVC模式 request,reponse,url.py,View.py,html。
django的命令 manage.py
n startnewapp
n syncdb
n runserver –noreload
n sqlrest
官方doc 的使用
n https://docs.djangoproject.com/en/1.4/
n 官方doc的结构
n search
TWISTED
n 一个基于事件驱动,异步的python高性能(?)网络开发框架
n 1核心
n http://twistedmatrix.com/trac/wiki
u Reactor
u Protocol
u Factory
python总结的更多相关文章
- Python中的多进程与多线程(一)
一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议
软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- 使用Python保存屏幕截图(不使用PIL)
起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...
- Python编码记录
字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...
- Apache执行Python脚本
由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...
- python开发编译器
引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...
- 关于解决python线上问题的几种有效技术
工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...
随机推荐
- 基于lua+nginx的abtest系统
指定一个参数 这个参数可以标识客户端唯一id的,比如用户id等 拿到这个id根据系统的hash算法会hash出一个bucket,目前支持的桶总数为10 根据后台设定的map关系(redis或配置文件) ...
- hadoop 2.6.0 yarn total memory metrics 不正常
https://issues.apache.org/jira/browse/YARN-3432
- select,poll,epoll之api笔记
参考:http://www.cnblogs.com/Anker/p/3265058.html select /* According to POSIX.1-2001 */ #include <s ...
- linux select函数 shutdown函数
#include<sys/select.h> #include<sys/time.h> int select(int maxfdp1,fd_set *readset,fd_se ...
- J2SE知识点摘记(十三)
1. 字节流 InputStream(输入字节流)是一个定义了java流式字节流输入模式的抽象类.该类的所有方法在出错时都会引发一个IOExcepiton异常. Void close() ...
- myeclipse 环境配置优化,不断跟新整理中
myeclipse 环境配置,不断跟新整理中1.General --->Workspace ---> UTF-8 工作环境编码2.General --->Editors --> ...
- Referrer 还是 Referer?
上回我写了一篇文章介绍「Referrer Policy」,有小伙伴看完后问我:Referrer 这个单词到底怎么拼,为什么有时候中间有两个 r,有时候只有一个? 是的,这是一个很有趣的问题,这里就给有 ...
- [原]基于CAS实现单点登录(SSO):登录成功后,cas client如何返回更多用户信息
从cas server登录成功后,默认只能从casclient得到用户名.但程序中也可能遇到需要得到更多如姓名,手机号,email等更多用户信息的情况. cas client拿到用户名后再到数据库中查 ...
- saiku安装方法总结
最近研究pentaho和saiku,在网上搜集了一些安装和配置的方法,亲测有效,在这分享总结一下方便日后使用. Saiku主要提供两种安装方式,独立运行和集成在Pentaho BI平台上,本文会简单介 ...
- 适配iPad的操作表sheet
在 UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"上传文件" message:@ ...