函数
来源:互联网 发布:拍小视频创意点子 知乎 编辑:程序博客网 时间:2024/06/14 00:44
Python乐高积木(一)函数
1.定义函数
def <名字>(参数1,参数2):
2.调用
<名字>(参数1,参数2)
3.return
返回给函数一个值
def add(num1,num2): return(num1+num2)print(add(5,6))
注意函数(有结果)与过程(无结果)的不同
形参 只是一个名字,没有具体参数。
实参 是具有具体参数的
4.默认参数和关键字参数
关键字参数是在调用时 默认函数是在定义时
5.收集参数
def test(*par): print('参数长度:',len(par)) print('第二个参数是',par[1])test(1,2,3,4,5)
6.局部变量和全局变量
局部变量在函数中
要在函数中修改全局变量,Python会在函数中再生成一个局部变量。
global关键字,在函数中可用 global <参数名>改变全局变量。
7.内嵌函数和闭包
def fun1(): print('1') def fun2(): print('2') return fun2()def fun1(x): def fun2(y): return x+y return fun2
8.lambda表达式
lambda返回的是一个值
f = lambda x,y,z : x+y+z print f(1,2,3)
9.filter过滤器
list(filter(lambda x : x % 2,range(10)))
10.map()
list(map(lambda x : x + 2,range(10)))
11.递归函数
递归函数:在函数内部,调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 用来理解lijie
汉诺塔
def move(n, a, b, c): if n == 1: print('move', a, '-->', c) else: move(n-1, a, c, b) move(1, a, b, c) move(n-1, b, a, c)>>> move(4, 'A', 'B', 'C')
在使用递归函数使要注意栈溢出,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。(使用尾递归优化)
def fact(n): if n==1: return 1 return n * fact(n - 1)
#尾递归优化后,尾递归是在函数返回的时候,调用自身本身,并且,return语句不能包含表达式
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)