1.函数定义
1.1.无参函数: def 函数名():
1 2
| def myFun(): print('这是python无参参数')
|
调用:myFun() —–>这是python无参参数
1.2.有参函数: def 函数名(参数1,参数2,…..参数n)
1 2
| def calc(para1,para2,para3): print(para1 + para2 * para3)
|
调用:calc(2,5,4) —–>22
2. 函数的返回值
函数的返回值直接return即可
3.函数的文档与注释
1 2 3 4 5 6 7
| def calc(para1,para2,para3): '这是函数文档' return (para1 + para2 * para3) ----------------------- return直接返回:print(calc(2,5,4))-->22 打印函数的文档:print(calc.__doc__)---->这是函数文档 ('用两个_')
|
4. 关键字参数和默认参数
关键字参数为了防止参数顺序传错而在调用时指定参数名
默认参数给参数默认值防值没有传参而到导致错误
1 2 3 4 5 6 7 8 9 10 11 12
| -------关键字参数--------- def myFun(name,age): print(name + " 是 " + age + '岁了') ------------ myFun('3','小明') myFun(age = '3',name = '小明') -------默认参数--------- def myFun1(name = '小明',age = '3'): print(name + " 是 " + age + '岁了') ---------- myFun1() myFun1('小明','3')
|
5.可变参数(收集参数)
1 2 3 4 5 6 7 8 9 10 11 12 13
| def changeFun(*para,name): print(name) sum = 0 for n in para: sum = sum + n return sum --------- print(changeFun(1,2,3,4,5,name='这是可变参数')) -----------可变参数和关键字混用可变参数要放在关键字参数前(下面会报错) def changeFun(name,*para): print(name + "可变参数有 " , len(para)) ------- changeFun(name='这是',1,2,3,4,5)
|
6.全局变量和局部变量
在函数中给全局变量重新赋值试图去改变全局变量的值必须使用 global 关键字申明
1 2 3 4 5 6 7 8
| num = 3 def changeNum(): global num num = 20 return num ------ print(changeNum()) 20
|
7. 内嵌函数
函数中可以嵌套函数
1 2 3 4 5 6 7 8 9
| def fun1(): print('这个第一个函数') def fun2(): print('这是个内嵌函数') fun2() fun1() -------- 这个第一个函数 这是个内嵌函数
|
如果内嵌函数用外部函数的变量使用nonlocal
1 2 3 4 5 6 7 8 9 10
| def fun1(): a = 10 def fun2(): nonlocal a a *= a return a return fun2() ------- print(fun1()) 100
|
8.闭包
1 2 3 4 5 6 7 8 9
| def fun1(num1): def fun2(num2): def fun3(num3): return num1 + num2 * num3 return fun3 return fun2 -------- print(fun1(5)(3)(5)) 20
|
1 2 3 4 5 6 7 8 9
| def fun1(num1): def fun2(num2): def fun3(num3): return num1 + num2 * num3 return fun3(5) return fun2(3) ---------- print(fun1(5)) 20
|
9.lambda表达式
使用lambda表达式替代函数更加简洁省去起函数名
1 2 3 4 5 6
| def add(a,b): return a + b print(add(5,10)) ===>等价于 c = lambda a,b:a+b print(c(5,10))
|
10.filter 和 map用法
filter(x,y) 按照x条件把y过滤掉
map(x,y) 按照x条件操作y
1 2 3 4 5 6 7
| a = list(filter(lambda x : x % 2, range(10))) print(a) [1, 3, 5, 7, 9] -------------- b = list(map(lambda x : x * 2, range(10))) print(b) [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
|