##############################################匿名函数##################################################### lambda x:x+1# def calc(x):# return x+1# calc(10)#用匿名函数来表示#####基本语法结构####lambda + 匿名函数的形参+函数表达处理公式(至关于函数的return)# lambda x:x+1# res = lambda x:x+1# print(res(10)###########根据输入的内容修改################################################################################## name = 'alex'# def name_change(name):# name = input('>>>')# print(name)# name_change(name)###########匿名函数#####################须要和其余函数一块儿使用,通常不是独立存在的############################### name = 'alex'# name_change = input(">>>")# lambda name:name_change# test = lambda name:name_change# print(test(name_change))##########匿名函数#####################只能使用一行,不能进行逻辑判断################################################################################################################################################################编程方法论:#1.面向过程式编程#2.函数式编程#3.面向对象#####################################什么是过程?#没有返回值的对象就是面向过程,过程也是函数#面向过程就是把大的问题分解成小的问题,基本单位就是函数######################################## 什么是函数式编程?# 和面向对象同样,基本单位都是函数#函数式编程 = 编程语言定义的函数 + 数学意义的函数#相比面向过程,函数式编程会更为精简,都是可读性差#python不是一门严格意义上的函数式编程语言########################################函数式编程的特性#1.不可变,不用变量保存状态,不修改变量#2.函数体内不该该有任何形式的赋值操做#3.尽可能不要使用在子函数去改全局变量########################################### def foo(n):# print(n)# def bar(name):# print('my name is %s' %name)# foo(bar('alex'))# 把函数当作参数传值,传给另外一个函数# def foo():# print('from foo')# return foo# print(foo()())######################################高阶函数##################################################1.把函数当作参数传给另一个函数#2.返回值中包含函数##############################高阶函数用于构成装饰器############################################——————————————————————————————————————————————###############################尾调用优化###########################################################尾调用:在函数的最后一步调用另一个函数(最后一行不必定是函数的最后一步)#——————————————————————————————————————————————################################map函数############################################################### num_1 = [1,2,10,5,3,7]#根据列表得出全部的元素的平方组成列表# ret = []# for item in num_1:# ret.append(item**2)# print(ret)# [1, 4, 100, 25, 9, 49]#############################封装函数############################################################### num_1 = [1,2,10,5,3,7]# def map_test(array):# ret = []# for item in num_1:# ret.append(item**2)# return ret# print(map_test(num_1))#————————————————————————————————————————————————## num_1 = [1,2,10,5,3,7]# def add_one(x):#lambda x:x+1# return x+1# def min_one(x):# return x-1# def map_test(func,array):# ret = []# for item in num_1:# res = func(item)# ret.append(res)# return ret# print(map_test(add_one,num_1))######终极版本############## num_1 = [1,2,10,5,3,7]# def map_test(func,array):# ret = []# for i in array:# res = func(i)# ret.append(res)# return ret# print(map_test(lambda x:x-1,num_1))# [0, 1, 9, 4, 2, 6]#########################map函数###################################################################### num_1 = [1,2,10,5,3,7]# res = map(lambda x:x-1,num_1)# print('内置函数map,处理结果',res)# 内置函数map,处理结果 <map object at 0x00000000027B8128># [0, 1, 9, 4, 2, 6]# for i in res:# print(i)# print(list(res))#map实际是迭代器#map 两个参数,第一个填方法,第二个写可迭代对象#———————————————————————————————————————————————————######################################filter函数########################################################## movie_person = ['alex','wupeiqi','yuanhao','sb_alex','linhaifeng']# def sb_show(n):# return n.endswith('sb')# def filter_test(array):# ret = []# for p in array:# if not p.startswith('sb'):# ret.append(p)# return ret# print(filter_test(movie_person))# movie_person = ['alex','wupeiqi','yuanhao','sb_alex','linhaifeng']# res = filter(lambda x:not x.startswith('sb'),movie_person)# print(list(res))# ['alex', 'wupeiqi', 'yuanhao', 'linhaifeng']#——————————————————————————————————————————————————————##################################reduce函数#################################################################### from functools import reducenum_l = [1,2,3,4,5,6,100]# res = 0# for num in num_l:# res+=num# print(res)# def reduce_test(func,array):# res = 0# for num in (array):# res+=num# return res# print(reduce_test(num_l))#reduce函数实际就是压缩数据,使用方法:函数+序列+初始值#################################################################总结#######################1.map用来处理序列中的每一个元素,获得的结果是一个迭代器形式的列表(元素的格式及位置与原来同样)#2.filter函数时遍历序列中的每个元素,判断每一个元素,获得布尔值,若是是True则留在内存中[用于过滤数据]#3.reduce就是合并数据#——————————————————————————————————————————————————###########################################内置函数######################################################### 1.abs()取绝对值# print(abs(-5))# 5################## 2.all()表明全部的值,全部的元素取出作布尔运算,0 None ‘ ’为假,全部的结果都是真则为真,有一个为假则为假# print(all([1,2,'1']))# True#3.any()表明任意的值,有一个为假,则全为假,有一个为真则全为真# print(any([1,2,'3',0]))# True# 4.bin()十进制转换为二进制# print(bin(3))# 0b11# 5.bool判断布尔值,空、None、0布尔值为False#6.bytes()表明把字符串转换为字节的形式,经过2进制传输# name = "你好"# print(bytes(name,encoding='UTF-8').decode('UTF-8'))#用什么方式编码就要用什么解码#7.classmethod()#8.delattr()#9.dict()字典#10.dir()目录,某一个对象下所具备的全部方法#11.divmod()取商得余数,能够用来作网页的分页功能# print(divmod(10,3))10表明总记录,3表明每页显示3条记录# (3, 1)#12.eval()将字符串中的字典提取出来,去除字符串,并执行数值计算# dic = {'name':'alex'}# dic_str = str(dic)# print(dic_str)# print(eval(dic_str))#13.hash()可hash的数据类型即不可变的数据类型,不可hash的位可变的数据类型# hash实际是一种算法,根据算法得出hash值,任何值都会被算为指定位数的值,不能反推出值,变量不变,hash值不变#hash使用方法:网络下载时,数据传输时修改木马程序,致使电脑中毒,对软件总体作hash运算,将值和软件同时下载#下载后解码时使用hash值得出下载值,只要hash值相同及软件未被修改#14.help查看方法的使用#15.bin(10)十进制转换为二进制#16.hex(12)十进制转换为十六进制#17.oct(12)十进制转换为8进制#18.isinstance()什么是什么的实例,判断输入的数据是否是该类的数据类型# print(isinstance(1,int))# True#19.globals 系统处理成相对路径# name = '哈哈哈哈哈哈哈'# print(globals())#max()、min()取最大最小值