Python基础
变量名与赋值:变量名只能是字母、数字或下划线的任意组合,变量名的第一个字符不能是数字,关键字不能声明为变量名
常用数据类型:
整型:布尔型,标准整型,长整型
非整型:双精度浮点型,复数,decimal(不是内建类型)
序列类型:字符串,元组(tuple),列表(list)
映像类型:字典(dict)
type(a)查看变量a的类型
不可变数据类型:数字类型,不可变集合,字符串,元组(tuple)
可变数据类型:字典(dict),列表(list),可变集合(set)
流程控制:
if…else
while…
for…
break…
continue…
用户交互:
raw_input()和input()的区别
exec()和eval()函数:
eval()将字符串类型的代码执行并返回结果,print(eval('1+2+3+4'))
exec()将自字符串类型的代码执行,exec("print('hello,world')")
字符串常用功能:
移除空白 strip()
分割 split()
长度 len(obj)
索引 obj[]
切片 obj[1:],obj[1:10]
join()函数:
连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
获取list中指定元素的下标值:
#!/usr/local/bin/python #_*_ coding:utf-8 _*_ a=[1,2,3,4,5,6,7,8,1,2,3,4,5,6,1,2,3,4,5] pos=0 for i in range(a.count(2)) : #先找出一共有多少个2,有多少就循环多少次 if pos == 0 : pos = a.index(2) else : pos = a.index(2,pos+1) print pos
dict,list,set区别:
dict:查找和插入的速度极快,不会随着key的增加而增加。需要占用大量的内存,内存浪费多。KEY不可变。默认无序
list:查找和插入的时间随着元素的增加而增加。占用空间小,浪费内存很少。通过下标查询。有序
set:无序,不重复
Python计数器:
import collections obj = collections.Counter('sdfasdfasdfsdfqwerqw') print(obj) ret = obj.most_common(4) print(ret)
enumerate()函数:
取得位置索引和相应的值
#!/usr/bin/python
for i,v in enumerate(['tic','tac','toe']):
print(i,v)
for i,v in enumerate(['tic','tac','toe'],1):
print(i,v)
文件处理:
f.read()与f.readline()与f.readlines()与f.xreadlines()区别
read()方法用于直接读取字节到字符串中,可以将参数给定最多读取的字节数,如果没有给定,则文件读取到末尾
readline()方法读取打开文件的一行(读取下个行结束符之前的所有字节),然后整行,包括行结束符,作为字符串返回
readlines()方法读取所有行然后把它们作为一个字符串列表返回
xreadlines()返回一个生成器,来循环操作文件的每一行
f.write()与f.writelines()
write()将字符串写入文件中
writelines()接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动加入,需要显示加入换行符
f.seek(64) 指定当前指针位置
f.tell() 查看当前指针位置
深浅拷贝:
对于数字和字符串而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址
对于字典、元组、列表而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的
浅拷贝,在内存中只额外创建第一层数据
深拷贝,在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化)
lambda表达式,map(),reduce():
Lambda表达式
temp = lambda x,y:x+y
print temp(4,10)
map()对所有元素进行统一操作
reduce()用来进行累计操作,累加,累减,累乘等
通用模块:
要想当成一个模块使用,文件夹下必须有__init__.py
是否为主文件:if __name__ == '__main__ '
当前文件路径:__file__
当前文件描述:__doc__
random模块
md5模块
序列化和json:dumps,loads
re正则表达式:
match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配
re.split()将匹配到的格式当做分割点对字符串分割成列表
re.findall()找到所有要匹配的字符并返回列表格式
时间模块:
print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
print datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S")
sys模块:
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
os模块
shutl模块:高级的文件、文件夹、压缩包处理模块
configparser模块:用于生成和修改常见配置文档,当前模块的名称在 python 3.x 版本中变更为configparser
subprocess模块:运行一个外部的程序,subprocess.Popen(...)用于执行复杂的系统命令
logging模块
面向对象:
Class类
Object对象
Encapsulation封装
Inheritance继承
Polymorphism多态
接口
单例模式
单例模式用来保证内存中仅存在一个实例 ##单例定义 class Foo(object): __instance = None @staticmethod def singleton(): if Foo.__instance: return Foo.__instance else: Foo.__instance = Foo() return Foo.__instance ##获取实例 obj = Foo.singleton();
反射:
以字符串的形式导入模块:
temp = 'mysqlhelper'
model = __import__(temp)
model.count()
以字符串的形式执行函数:
temp = 'mysqlhelper'
func = 'count'
model = __import__(temp)
Function = getattr(model, func)
print Function()
socket编程:
SocketServer是python的一个网络服务器框架,可以减少开发人员编写网络服务器程序的工作量
异常处理:
try: pass except xxxExcept,e: pass except Exception,e: pass else: pass finally: pass class MyError(Exception): def __init__(self,msg): self.Message = msg def __str__(self): return self.Message try: a = 1 raise MyError('卧槽') except Exception,e: print e 断言 assert(1==1)