day7

全局变量的使用:

PETS = []
def add_pet(pet):
	PETS.append(pet)
	#PETS = ['aaaa']
	print PETS
add_pet({'id':1,'name':'dimo','type':'dog'})
#[{'id':1,'name':'dimo','type':'dog'}]
#因为append函数只是在原函数的基础上做一些改变即修改PET指向的内容
#如果我们对他重新定义并赋值,则它和外面的全局变量没有任何的关系。

sort函数的使用:

a = [5,4,3,2,1]
a.sort()
print (a)
#[1,2,3,4,5]//重小到大函数
a = [5,4,3,2,1]
a.sort()
a.reverse()
print a
#
def sort_key(x):
	return x['age']
a = [{'username':'python,'age':'18'},{'username':'ketang','age':'20'}]
a.sort(key=sort_key)
#a.sort(key=sort_key,reverse=True)//倒序排序
print(a)
#函数的意思就是用age对应的数字进行排序
#这里必须要用key可以和前面讲的函数参数联系在一起。

cmp函数:compare
cmp函数需要传递两个参数1.如果a>b,则返回1
2.如果a<b,那么返回-1
3.如果a=b,那么返回0

a = 2
b = 2
result = cmp(b,a)
print (result)
#

sort函数通常和cmp一同使用来自定义比较规则

a = [{'username':'python2','age','18'},{'username':'python2','age':'20'}]
def sort_cmp(x,y)
	result = cmp(x['age'],y['age'])
	if result == 0:
		result = cmp(x['username'],y['username'])
	else:
		return result
a.sort(cmp=sort_cmp)
print (a)

匿名表达式lambda
lambda表达式实现可以参数
如果一个函数只用一次,并且代码特别少,那么建议使用lambda表达式来简化:

a = [{'username':'python,'age':'18'},{'username':'ketang','age':'20'}]
#a.sort(key=sort_key)
#def sort_key(x):
#	return x['age']
a.sort(key=lambda x:x['age'],reverse=True)
print (a)
#lambda相当于是函数名后面的x代表参数,x['age']不用添加返回值

函数式编程:
写一个函数作为参数的函数
需求:要求两个值的一个运算(+,-,*/)

def calculate(a,b,operator):
	result = operate(a,b)
	return result;
a = 1
b = 2
def add(x,y)
	return x+y
#c = calculate(a,b,add)
c = calculate(a,b,lambda x,y:x+y)
print (c)
# 3
#这里我们有两种处理方式意思定义一个

lambda表达式替换函数lambda后加空格+参数1,参数2+冒号+处理方式。
1.用filter函数过滤掉小于3的数

a = [1,2,3,4,5,6]
def fiter(operator,a)
	c = operator(a)
	return c
def select(a)
	b = []
	for x in a:
		if x>=3:
			b.append(x)
	return b
c = fiter(select,a)
print(c)
#[3,4,5,6]	

大概流程描述
day7
map函数将数组中的=所有的数组都扩大10倍:

a = [1,2,3,4,5]
def map(operator,a):
	c = operator(a)
	return c
def mulity(a):
	i=0
	for x in a:
		a[i]*=10
		i+=1
	return a
c=map(mulity,a)
print(c,end='')
#[10, 20, 30, 40, 50]

使用reduce函数来求下列表中数值子和:

a = [1,2,3,4,5]
reduce(函数,列表)
b= a.reduce(lambda x,y:x+y,a)