1、基本函数
abs(x) # 取正
cmp(x,y) # x<y -1 x=y 0 x>y 1
int(x) # 转换为整型
float(x) # 转换为浮点型
bool(x) # 转换为布尔型
isinstance(x,(int,float)) #x类型是否为int|float
2、定义函数
def mydef(x): if x>0: return '大于0' else return '小于0' # 没有return,返回None
3、空函数(占位)
def nop(): pass #什么都不做
4、返回多个值(其实返回的是tuple)
def many(): return 1,2 x,y = many() # x = 1 y = 2 a = many() # (1,2)
5、默认参数
def power(x,n=2): s = 1; while n >0: n = n - 1 s = s * x return s power(2) # 4 power(2,3) # 8
6、不变对象
def mydef(l=[]): l.append('a') return l mydef() #l =['a'] mydef() #l =['a','a']
解决办法
def mydef(l = none): if l is none: l = [] l.append('a') return l
7、可变参数(传入的参数个数是可变的)
# 参数前加'*',函数内部接受的是一个tuple def mydef(*number): s = 0 for n in number: s = s + n return s mydef(1,2,3) mydef(1,2,3,4,5)
8、关键字参数
# 可以传入任意个含参数名的参数,封装为dict def mydef(name,sex,**a): print 'name:',name,' sex:',sex,' a:',a mydef('name','sex') #name:name sex:sex a:{} mydef('name','sex',other='other',id = 1) # name:name sex:sex other:{'other':'other','id':1}
9、特性
9.1、切片
l = range(100) l[0:3]|l[:3] # 从第0个开始,截取3个 l[:10:3] # 从第0个开始,截取10个,每三个取一个 l[::5] # 从第0个开始,每五个取一个 l[:] # 从第0个开始,取所有
9.2、迭代
# 判定是否可以迭代 from collections import Iterable isinstance('abc',Iterable) #true isinstance(123,Iterable) #false l = {'a': 1, 'b': 2, 'c': 3} for key in l: print key # a b c for k,v in l.iteritems print k , ' - ' , v # 列表生成 range(10) # 0~9 range(1,11) # 1~10 [x*x for x in range(1,11)] # [1*1,2*2...10*10] [x*x for x in range(1,11) if x%2==0] #[2*2,4*4...10*10]
10、高阶函数
一个函数就可以接收另一个函数作为参数。
def mydef(x,y,f): return f(x) + f(y)
10.1、Map
#集合中的每个元素都进行函数运算,并形成新的集合 def mydef(x): return x*x map(mydef,[1,2,3]) # [1,4,9]
10.2、reduce
reduce(f,[1,2,3]) # f(f(1,2),3) 函数f必须是两个参数
10.3、filter
def mydef(x): return x%2 == 1 # 将集合中满足函数的元素形成新的集合 filter(mydef,[1,2,3,4,5,6]) # [1,3,5]
10.4、sorted
sorted([3,5,1,4,2]) # [1,2,3,4,5] def mydef(x,y): if x>y: return -1 if x<y: return 1 return 0 sorted([3,5,1,4,2],mydef) # [5,4,3,2,1]
10.5、匿名函数(lambda)
map(lambda x: x * x, [1, 2, 3,]) # [1, 4, 9]