python函数做n_python-函数(补充),,def calc(n

python-函数(补充),,def calc(ndef calc(n): print(n) if int(n / 2) == 0: # 10/2 5/2 2/2 return n res=calc(int(n / 2)) return rescalc(10)####打印结果10521###################################import timeperson_list=[‘alex‘,‘wupeiqi‘,‘linhaifeng‘,‘zsc‘]def ask_way(person_list): print(‘-‘*60) if len(person_list) == 0: return ‘根本没人知道‘ person=person_list.pop(0) #去除列表的第一个元素,此时列表为去除元素之后的新列表 if person == ‘linhaifeng‘: return ‘%s说:我知道,老男孩就在沙河汇德商厦,下地铁就是‘ %person print(‘hi 美男[%s],敢问路在何方‘ % person) print(‘%s回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问%s...‘ % (person, person_list)) time.sleep(1) res=ask_way(person_list) print(‘%s问的结果是: %res‘ %(person,res)) return resres=ask_way(person_list)print(res)#####打印结果------------------------------------------------------------hi 美男[alex],敢问路在何方alex回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问[‘wupeiqi‘, ‘linhaifeng‘, ‘zsc‘]...------------------------------------------------------------hi 美男[wupeiqi],敢问路在何方wupeiqi回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问[‘linhaifeng‘, ‘zsc‘]...------------------------------------------------------------wupeiqi问的结果是: ‘linhaifeng说:我知道,老男孩就在沙河汇德商厦,下地铁就是‘esalex问的结果是: ‘linhaifeng说:我知道,老男孩就在沙河汇德商厦,下地铁就是‘eslinhaifeng说:我知道,老男孩就在沙河汇德商厦,下地铁就是

递归的特性:

1、必须有一个明确的结束条件

2、每次进入更深层次递归时,问题规模相比上次递归都应该有所减少

3、递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时通过栈(stack)这种数据结构实现的,当每次进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

2、匿名函数

匿名函数就是不需要显式的指定函数#这段代码def calc(n): return n**nprint(calc(10))#换成匿名函数calc = lambda n:n**nprint(calc(10))name=‘alex‘func=lambda name:name+‘_sb‘res=func(name)print(‘匿名函数的运行结果‘,res)#打印结果匿名函数的运行结果 alex_sb##################func1=lambda x,y,z:(x+1,y+1,z+1)res1=func(1,2,3)print(res1)#打印结果(2, 3, 4)

匿名函数主要是和其它函数搭配使用的呢,如下l=[3,2,100,999,213,1111,31121,333]print(max(l))dic={‘k1‘:10,‘k2‘:100,‘k3‘:30}print(max(dic)) #打印结果k3print(dic[max(dic,key=lambda k:dic[k])])

#################解释说明,有关于max的源码######################def max(*args, key=None): # known special case of max

"""

max(iterable, *[, default=obj, key=func]) -> value

max(arg1, arg2, *args, *[, key=func]) -> value

With a single iterable argument, return its biggest item. The

default keyword-only argument specifies an object to return if

the provided iterable is empty.

With two or more arguments, return the largest argument.

"""

passres = map(lambda x:x**2,[1,5,7,4,8])for i in res: print(i)输出125491664

3、高阶函数

满足俩个特性任意一个即为高阶函数

1.函数的传入参数是一个函数名

2.函数的返回值是一个函数名array=[1,3,4,71,2]ret=[]for i in array: ret.append(i**2)print(ret)#如果我们有一万个列表,那么你只能把上面的逻辑定义成函数def map_test(array): ret=[] for i in array: ret.append(i**2) return retprint(map_test(array))#如果我们的需求变了,不是把列表中每个元素都平方,还有加1,减一,那么可以这样def add_num(x): return x+1def map_test(func,array): ret=[] for i in array: ret.append(func(i)) return retprint(map_test(add_num,array))#可以使用匿名函数print(map_test(lambda x:x-1,array))#上面就是map函数的功能,map得到的结果是可迭代对象print(map(lambda x:x-1,range(5)))

python-函数(补充)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值