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]