列表推导式
类似 data=[x+1 for x in range(10)]执行结果就是 [1,2,3,4,5,6,7,8,9,10]
还有 even_numbers=[x for x in range(10) if x%==0] 执行结果【0,2,4,6,8】
生成器表达式(generator expression)
用法与列表推导式类似
ever_number=(x for x in range(1000) if x%==0) 每次处理一个对象,节省内存
字符串string
不可修改,获得的结果都是其新的拷贝,常用函数
字符串前面可以有修饰符
比如mystring=u“hello” u代表Unicode字符
mystring=r'c:programfile' r代表raw字符,就是字符串不经过转义等
格式化字符串
>>> '%s is number %d' %(s[:6],1)
输出list类型s[0]-s[5] is number 1
常见异常exception
函数
定义函数的时候可以直接指定默认值
例如:def check_web_server(host,port=80,path='/')
*args 和**kwargs
一般来说,函数调用或者声明中,* 代表元组,**代表字典
例如 check_web_server('127.0.0.1','8000','admin/')
等同于host_info=('127.0.0.1','8000','admin/')
check_web_server(*host_info)
如果host_info=[host:'127.0.0.1',port:'8000',path:'admin/']
那就是check_web_server(**host_info)
变长参数也可以使用*args或者**kwargs来传递
例如 def f(*args,**kwargs):
这样的函数可以按照 f(),f(a,b,c),f(a,b,foo=c,bar=d)来调用
django 装饰器
def deco(func):
print("deco")
return func
@deco
def foo():
print("foo")
foo() 等同于deco(foo)
执行结果 为
deco
foo
面向对象编程
类
class AddressBook(object):
version=0.1
def __init__(self,name,phone):
self.name=name
self.phone=phone
方法必须带上self对象,python支持动态实例属性,即没有在定义里声明的属性也可以使用
例如 john=AddressBook(‘john’,‘111111’)
john.address='beijing' 也是允许的
继承
class EmployeeAdressBook(AdressBook):
def __init__(self,name,phone,id,social):
AdressBook.__init__(self,name,phone)
self.id=id
self.ssn=social
继承需要显式调用父类方法
python 正则表达式
>>> import re >>> m=re.serch(r'foo',seafood) >>> print m <_sre.SRE_Match object at ...> >>>m.group() 'foo'