6.函数的递归
在函数的内部,去调用自己
条件
1.函数自己要调用自己 2.递归一定要有结束条件
def fact(n):
if n == 1:
return 1
return n*fact(n-1)
print(fact(5))
如果递归的次数太大会导致栈溢出的情况,怎么解决? 尾递归 ------ 调用自己的时候没有任何表达式
def fact(n):
return fact_iter(n,1)
def fact_iter(num,product):
if num == 1:
return product
return fact_iter(num-1,num*product)
print(fact(5))
7.匿名函数
匿名函数 ------ lambda表达式
function 函数名称(参数){
//代码块
return 返回值
}
function(参数){
//代码块
}
python中
def 函数名(参数):
return 返回值
语法格式:
lambda 参数:代码如果有返回值就写,没有就不写
def sum(a,b,c):
return a + b + c
sum_lambda = lambda a,b,c:a + b + c
print(sum(1,100,1000))
print(sum_lambda(1,100,1000))
参数的个数:
a_lambda = lambda:100
print(a_lambda())
b_lambda = lambda num:num *10
print(b_lambda(5))
sum_lambda = lambda a,b,c:a + b + c
c_lambda = lambda x:x if x % 2 == 0 else x + 1
print(c_lambda(6))
print(c_lambda(7))
def sub_func(a,b,func):
print("a=",a)
print("b=",b)
print("c=",func(a,b))
sub_func(100,1,lambda a,b:a-b)
a = 100
b = 1
c = 99
def run_func(a,b):
return lambda c:a + b + c
return_func = run_func(1,100)
print(run_func)
print(return_func)
print(return_func(10))
8.偏函数
在python中,如果在设置某个函数的时候需要把函数的某个参数设置为固定的值
functools其中就包含偏函数(partial)
import functools
form functools import partial(只导入了偏函数的库)
partial (函数名称,参数=固定值)
>>> int("12345")
12345
>>> int("12345",base=8)
5349
>>> int("12345",base=16)
74565
>>> def int2(x,base=2):
... return int(x,base)
...
>>> int2("11101")
29
>>> int2("11101101")
237
>>> import functools
>>> int3 = functools.partial(int,base=2)
>>> int3("11101")
29
9.全局函数
round() ------ 在奇数上所谓标准的四舍五入,在偶数上是以5为分界线,小于等于0.5的都舍去
>>> round(4.5)
4
>>> round(5.5)
6
>>> round(6.5)
6
>>> round(7.5)
8
round()用法 ------ 奇变偶不变/奇进偶定
|