1.什么是函数?
函数就是对实现某一特定功能的代码块的封装
2.函数的分类:
系统函数(内置函数)- 系统已经实现的函数
例如:print(),range(),input()...
自定义函数:程序员自己声明的函数
3.函数的声明(定义)
语法:
def 函数名(形式参数):
函数体
def - python 声明函数的关键字
函数名 - 和变量名要求一样,要求见名知意(函数的功能)
() - 固定写法
形参列表 - 参数1,参数2....(0个或者多个)
型参作用 - 将函数外部的数据传递到函数里面
: - 固定写法
函数体(函数) - 和def保持一个缩进(实现函数功能的代码块)
4.初学者声明函数的步骤
第一步:确定函数的功能
第二部:根据功能确定函数名
第三部:确定形参(看实现函数的功能需不需要从外面传值,如果需要确定传几个)
第四部:实现函数的功能
第五步:确定返回值
def totals(a, b):
c = a + b
print('%d + %d = %d' % (a, b, c))
totals(5, 7) # 5 + 7 = 12
5.函数的调用
1.语法:
函数名(实参列表)
2.说明:
函数名 - 已经声明过的函数
() - 固定写法
实参列表 - 数据1,数据2,数据3...(实参是用来给形参赋值)
def sum_tatal(n): # n形式参数
"""
功能:实现从1一直加到n的和,n代表要从1加到多少
"""
sum_tatal_n = 0
for x in range(1, n+1):
sum_tatal_n += x
print('从1一直加到%d的和为:%d' % (n, sum_tatal_n))
sum_tatal(100) # 调用 sum_tatal()函数,100为实际参数
3.函数的调用过程(重要)
第一步:回到函数声明的位置
第二部:用实参给形参赋值 - 传参,保证每个形参都有值
第三部:执行函数体
第四步:确定返回值,看执行过程中有没有遇到return,有遇到return就返回return后面的值没有遇到return返回默认值(None)
第五步:回到函数调用的位置,接着往后执行
6.函数的参数
1.位置参数和关键字参数
根据调用函数的时候实参的写法分为位置参数和关键字参数
位置参数:让实参顺序和实参一一对应,中间用逗号隔开
关键字参数:通过形参名 = 值的格式来确定实参
注意:如果既有位置参数又有关键字参数,位置参数一定要在关键字参数前面
def fun1(a, b, c):
print('a:%d b:%d c:%d' % (a, b, c))
fun1(c=10, b=30, a=100) # 关键字参数
fun1(10, c=50, b=40) # 为值参数+关键字参数
2.参数默认值
声明函数的时候,可以给形参设置默认值,有默认值的形参,在调用函数的时候可以不用给这个形参赋值
注意:有默认值的参数,要放在没有默认值参数的后面
def fun2(a, b, c=100): # c=100是设置的默认值
print('a:%d b:%d c:%d' % (a, b, c))
fun2(a=10, b=30) # a:10 b:30 c:100 ->没有给c赋值,打印的是默认值
fun2(a=10, b=30, c=50) # a:10 b:30 c:50 ->给c赋值50,覆盖了默认值
3.参数的类型说明
python中类型只有说明的作用,没有约束的作用
说明方法:
1.参数默认值
2.参数名:类型
def fun3(a: list, b: int, c=''):
print(a, b, c)
fun3([1, 2], 20, '哈哈')
4.不定长参数:形参的个数不确定
在声明函数的时候在形参前加一个*号,就代表这个参数是不定长参数,可以同时接收多个实参
注意:不带*的参数要放在带*参数的前面
*参数 - >生成元组(位置参数赋值)
**参数 -> 生成字典(关键词参数赋值
def fun4(*nums):
counts = 0
for items in nums:
counts += items
print('和为:%d' % counts)
fun4(1)
fun4(1, 5)
7.函数的返回值
1.什么是函数的返回值
返回值就是return关键字后面的表达式的值,就是函数调用表达式的值
说明:
1.return -> 函数体中的关键字(只能出现在函数中)
2.作用结束函数,确定函数返回值
过程:
第一步:回到函数声明的位置
第二部:用实参给形参赋值 - 传参,保证每个形参都有值
第三部:执行函数体
第四步:确定返回值,看执行过程中有没有遇到return,有遇到return就
返回return后面的值没有遇到return返回默认值(None)
第五步:回到函数调用的位置,接着往后执行(此时调用函数表达式的值就是函数的返回值)
def return1(a, b):
c = a + b
return c
print('和 = ', 4 + return1(5, 5)) # 和 = 14
2.什么时候需要返回值(初学者)
指导思想:如果实现函数的功能会产生先的数据,就可以把这个数据作为函数的返回值直接返回多个值的时候,实际返回的是元组
def return2(a, b):
return a+b, a-b
c = return2(20, 10)
print(c, type(c)) # (30, 10) <class 'tuple'>