1.函数定义
1.1.无参函数: def 函数名():
def myFun():
print('这是python无参参数')
调用:myFun() —–>这是python无参参数
1.2.有参函数: def 函数名(参数1,参数2,…..参数n)
def calc(para1,para2,para3):
print(para1 + para2 * para3)
调用:calc(2,5,4) —–>22
2. 函数的返回值
函数的返回值直接return即可
3.函数的文档与注释
def calc(para1,para2,para3):
'这是函数文档'
# 这是函数注释
return (para1 + para2 * para3)
-----------------------
return直接返回:print(calc(2,5,4))-->22
打印函数的文档:print(calc.__doc__)---->这是函数文档 ('用两个_')
4. 关键字参数和默认参数
关键字参数为了防止参数顺序传错而在调用时指定参数名
默认参数给参数默认值防值没有传参而到导致错误
-------关键字参数---------
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.可变参数(收集参数)
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 关键字申明
num = 3
def changeNum():
global num
num = 20
return num
------
print(changeNum())
20
7. 内嵌函数
函数中可以嵌套函数
def fun1():
print('这个第一个函数')
def fun2():
print('这是个内嵌函数')
fun2()#fun1调用fun2
fun1()
--------
这个第一个函数
这是个内嵌函数
如果内嵌函数用外部函数的变量使用nonlocal
def fun1():
a = 10
def fun2():
nonlocal a
a *= a
return a
return fun2()
-------
print(fun1())
100
8.闭包
def fun1(num1):
def fun2(num2):
def fun3(num3):
return num1 + num2 * num3
return fun3 # 是fun3不是fun3()
return fun2 #是fun2不是fun2()
--------
print(fun1(5)(3)(5))
20
def fun1(num1):
def fun2(num2):
def fun3(num3):
return num1 + num2 * num3
return fun3(5) # 是fun3()不是fun3
return fun2(3) #是fun2()不是fun2
----------
print(fun1(5))
20
9.lambda表达式
使用lambda表达式替代函数更加简洁省去起函数名
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
a = list(filter(lambda x : x % 2, range(10)))
print(a) #把0到9能整除2的过滤掉
[1, 3, 5, 7, 9]
--------------
b = list(map(lambda x : x * 2, range(10)))
print(b)#把0到9每个数乘以2
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]