初始函数
概念
是什么?
一系列python语句的组合,可以在程序中运行一次或多次,完成具体、独立的功能。
为什么?
整体结构清晰,代码复用最大化,代码冗余最小化,问题局部化。
定义
语法:
1
2def 函数名():
函数体案例:输出小明的信息
1
2def printInfo():
print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20"))
调用
语法:
1
函数名()
案例:调用上例中创建的printInfo函数
1
2
3def printInfo():
print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20"))
printInfo() #调用已创建的 printInfo 函数运行结果:
注意:
函数必须先定义才能被调用
函数注释的写法:
1
2
3
4
5
6def printInfo():
'''
输出小明的信息
:return:
'''
print('姓名:{},性别:{},年龄:{}'.format("小明", "男", "20"))调用函数时,按下ctrl并把鼠标放在函数名上会有如下提示:
函数参数
分类
- 必选参数
- 默认参数
- 不定长参数
- 关键字参数
必选参数
调用时必须要给参数值
案例:编写两数求和函数,输出运算结果
1 | def getSum(numA, numB): |
传参调用:
1
getSum(3, 5)
运行结果:
不传参调用:
1
getSum()
运行结果:
默认参数
缺省参数,无参数时使用默认值
1 | def getSum(a=10, b=20): |
不传参调用:
1
getSum()
运行结果:
传参数调用:
1
getSum(1, 2)
运行结果:
易错案例:
1
2
3
4def getSum(a=20, b):
print(a + b)
getSum(1)运行结果:
分析:实参个数<形参个数时,参数会从左向右依次分配,所以 a=1,但由于 b 没有默认值所以会报错。
注意:从上面的案例也能看出,默认(缺省)参数始终存在于参数列表中的尾部,否则没意义。
不定长参数
当参数个数不确定时使用
输出单个参数:
1
2
3
4def getResult(*args):
print(args)
getResult(1)运行结果:
多个参数求和:
1
2
3
4
5
6
7def getResult(*args):
sum = 0
for item in args:
sum += item
print(sum)
getResult(1, 2, 3, 4, 5)运行结果:
关键字参数
接受字典类型的参数
1 | def info(**kwargs): |
传参方法1:
1
2dictA = {'name': 'xiaoming'}
info(**dictA) # 注意 **运行结果:
传参方法2:
1
info(name="xiaoming") # 注意:key不可以加引号,否则报错
运行结果:
返回值
函数执行完以后会返回一个对象,使用return即可实现,否则返回none
注意:
- 在一个函数体中可以出现多个return,但只能选择一个返回
- 只要执行了return,则其后面的代码均不再执行
单个数据
1 | def Sum(a, b): |
运行结果:
多个数据
返回列表、元组、字典
返回列表:
1
2
3
4
5
6def Sum():
return ['sda', 1, 0.5] #返回列表类型的数据
num = Sum() # num接受返回值
print(type(num))
print(num)运行结果:
返回元组:
1
2
3
4
5
6def Sum():
return 1,2,3,4 #返回元组类型的数据
num = Sum() # num接受返回值
print(type(num))
print(num)运行结果:
返回字典:
1
2
3
4
5
6def Sum():
return {"name":"菜徐坤"} #返回字典类型的数据
num = Sum() # num接受返回值
print(type(num))
print(num)运行结果:
嵌套调用
1 | def ddd1(): |
运行结果:
注意:函数一定要先定义再调用