1.什么是函数
背景:在编程中,我们经常要用到调用相同或者类似的操作,这些相同或者类似的操作是由同一段代码完成的。函数的出现可以帮助我们避免重复编写这段代码。把相对独立的某个功能抽象出来,使之称为一个独立的实体
定义:函数就是完成特定任务,执行特定功能的一段代码
作用:复用代码,隐藏实现细节,提高可维护性,提高可读性,便于调试
2.函数的创建和调用
(1)函数的创建
定义一个函数要以def开头
> def 函数名 ([参数]):
> 函数体
> [return xxx] # 返回值
-
函数名:和python中的其他的标识符命名规则相同,有效的函数名以字母或者下划线开头,后面可以跟字母、数字或下划线。注意区分大小写
-
函数参数:调用一个函数是可以传递参数,参数可以由一个或者多个,也可以没有
-
函数体:任何有效代码都可以出现在函数内部,注意要比def缩进四个空格
-
返回值:执行后的返回的值,可以不返回内容,不返回的时候可视为返回None,不返回return可以省略
关于函数的返回值:
(1)如果函数没有返回值(函数执行完毕结束以后不需要提供数据,return可以直接省略不写)
(2)函数的返回值是一个,直接返回类型
(3)函数的返回值如果是多个,返回的结果为元组
def fnc1(a,b):#a,b 称为形式参数,简称形参
c=a+b
return c
print(fnc1(10,20),type(fnc1(10,20)))
30 <class 'int'>
def fnc2(a,b):#a,b 称为形式参数,简称形参
c=a+b
return a,b,c
print(fnc2(10,20),type(fnc2(10,20)))
(10, 20, 30) <class 'tuple'>
(2)函数的调用
输入函数名和参数
实列:
def calc(a,b):#a,b 称为形式参数,简称形参
c=a+b
return c
# 函数的调用
# 函数名(实际参数)
result=calc(3,4) #3,4 称为实际参数,简称实参
print(result)
3.函数的参数的定义
(1)必须参数:
函数调用时,函数定义的参数调用时必须传入,并且数量和位置必须和参数保持一致
(2)关键字参数:
函数调用时,使用关键字参数可以不按函数参数的位置来调用函数,默认值参数在定义时设置,关键值参数是在调用时使用
def fnc(a,b):#a,b 称为形式参数,简称形参
c=a+b
return c
fnc(30,40) # 70 这里按顺序指定a是30,b是40
print(calc(b=30,a=40)) #关键字参数
(3)默认值参数
函数定义时,给形参设置默认值,只与默认值不符的时候,才需要传递实参
def fnc(a,b=10):#a,b 称为形式参数,简称形参
c=a+b
return c
fnc(100) # 110
fnc(30,40) # 70
(4)可变参数
个数可变的的位置参数
- 定义函数时,可能无法事先确定传递的位置参数的个数时,使用可变的位置参数
- 使用*定义个数可变的位置形参
- 结果为一个元组
def fun1 (*args):#函数定义时,可变的位置参数
print(args)
fun1(1,2,3)
(1, 2, 3)
个数可变的关键字形参
- 定义函数时,可能无法事先确定传递的关键字参数的个数时,使用可变的位置参数
- 使用**定义可变的关键字形参
- 结果为一个字典
def fun2 (**args):#函数定义时,可变的位置参数
print(args)
fun2(a=1,b=2,c=3)
{'a': 1, 'b': 2, 'c': 3}
小技巧
在一个函数定义的过程中,既有个数可变的关键字形参,也有个数可变的位置形参,要求,个数可变的位置形参,放在个数可变的关键字形参之前,不然定义时会报错
def fun3 (*args1,**args2):
print(args1,args2)