#_author:Administrator#date:2019/11/1#1 def fun(*args): print(args)a=[1,2,3]fun(*a)# (1, 2, 3)print(‘--------------‘)def fun1(**kwargs): print(kwargs)fun1(**{‘name‘:‘star‘})#{‘name‘: ‘star‘}直接传一个字典#2.高阶函数#(1)函数名是一个变量,可以进行赋值#(2)函数名可以做为函数的参数,还可以作为函数的返回值def f(n): return n*ndef fun2(a,b,func): return func(a)+func(b)print(fun2(2,3,f))#13print(‘---------------------‘)def fu(): def f(): return 5 return fm=fu()print(m)#<function fu.<locals>.f at 0x03719738> 是一个函数对象地址print(m())# 5print(‘---------------------‘)#3 递归函数def jie(n): if n==1: return 1 return n*jie(n-1)print(jie(5))# 120print(‘---------------------‘)#关于递归的特性:#1.内部调用自身函数#2.有一个结束条件#递归可以解决的问题都可以用循环来解决#递归在很多时候效率很低#斐波那契数列def fibo(n): if n<=2: return n return fibo(n-1)+fibo(n-2)print(fibo(8))#34#0 1 1 2 3 5 8 13 21 34 55print(‘---------------------‘) def fibo1(n): if n==0 or n==1: return n return fibo1(n-1)+fibo1(n-2)print(fibo1(8))#21#4.内置函数print(‘---------------------‘)print(all([1,2,3,‘asd‘]))#True all()函数用于判断给定的可迭代参数 iterable中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。print(all([1,2,3,‘asd‘,‘‘]))#Falseprint(divmod(8,3))#求 余数 和 模 (2, 2)print(eval(‘3+4*6‘))# 27 eval()可以帮我们做算术运算,也可以将一个字符串转换为字典#重要的内置函数(1)filter 的功能是过滤掉序列中不符合函数条件的元素,当序列中要删减的元素可以用某些函数描述时,就应该想起filter函数。str=[‘a‘,‘s‘,‘d‘,‘f‘]def func(s): if s!=‘d‘: return sret=filter(func,str)print(ret)#<filter object at 0x007809F0> ret是一个过滤器对象,也是一个迭代器对象print(list(ret))#[‘a‘, ‘s‘, ‘f‘]print(‘------------------------‘)#(2)map() 是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。list=[‘a‘,‘s‘,‘d‘,‘f‘]def func(s): return s+‘star‘ret2=map(func,list)print(ret2)#<map object at 0x03910B10>print(list(ret2))#[‘astar‘, ‘sstar‘, ‘dstar‘, ‘fstar‘]对字符串进行处理#(3)reduce()要想调用此方法,前面加上from functools import reduce#对一个序列进行压缩运算,得到一个值。但是reduce在python2的时候是内置函数,到了python3移到了functools模块,所以使用之前需要 from functools import reduce#调用: reduce(function,iterable),其中function必须传入两个参数,iterable可以是列表或者元组 from functools import reducedef add_1(x,y): return x + yprint(reduce(add_1,[1,2,3,4,5,6,7,8,9]))#45 reduce()的结果就是一个值print(reduce(add_1,range(1,101)))#5050#(4)lambda-->匿名函数def add_2(a,b): return a+b lambda x,y:x+y#通过reduce函数加lambda表达式(匿名函数)求阶乘from functools import reduceprint(reduce((lambda a,b:a*b),range(1,5)))#24#通过map函数加lambda表达式(匿名函数)squares=map(lambda x:x*x,range(9))print(squares)#<map object at 0x01250D90>print(list(squares))#[0, 1, 4, 9, 16, 25, 36, 49, 64]
原文地址:https://www.cnblogs.com/startl/p/11781274.html
时间: 2024-10-09 16:47:10