第一章 1.9 函数基础
一、认识函数
1、什么是函数
1)、函数的定义:函数就是对实现某一特定功能的代码的封装
2)、函数的分类:
①、系统函数 - 语言系统自带的,可以直接调用的函数:print、len、chr、ord、input...
②、自定义函数 - 开发者自己声明的函数
二、函数的声明
1、语法:
def 函数名(参数列表):
函数说明文档
函数体
2、说明:
- def---------->关键字,固定写法
- 函数名---------->和变量名的要求一样
- ():---------->固定写法
- 参数列表---------->又叫形参;(参数名1,参数名2,参数名3...)参数名就是变量名;将函数外面的数据传到函数里面
- 函数说明文档 ---------->本质就是一段注释
(要求:①必须在第一行有效代码的前面;②需要使用三个双引号引起来的注释) - 函数体---------->和def保持一个缩进的一条或多条的代码;也是实现函数功能的代码。
3、声明函数的步骤(重要)
①、确定函数的功能
②、函数名 见名知义
③、确定参数(形参),看实现函数的功能需不需要额外的数据,需要几个就设置几个形参
④、实现函数的功能
⑤、写说明文档
注意:声明函数的时候不会执行函数体
# 声明一个函数,打印两个数的和
def diy_sum(num1, num2):
"""
(函数功能说明区)求两个数的和
"""
print(num1 + num2)
diy_sum(10, 20)
# 声明一个函数求阶乘N!
def diy_factorial(n):
pro = 1
for x in range(1, n+1):
pro *= x
print('%d的阶乘是:%d' % (n, pro))
diy_factorial(5)
三、函数的调用
1、语法:
函数(实参列表)
2、说明
- 函数---------->已经声明的函数
- ()---------->固定写法
- 实参列表---------->需要传递到函数中使用的具体数据,用来给形参赋值的;写法:多个数据用逗号隔开;
3、函数的调用过程(重要)
①:回到函数声明的位置
②:传参---用实参给形参赋值(必须保证每个形参都有之,不能多也不能少)
③:执行函数体
④:确定返回值
⑤:回到函数调用的位置接着往后执行代码
四、参数
1、参数赋值
1)、位置参数---------->让实参的值和形参的位置一一对应
2)、关键字参数---------->调用函数的时候以‘形参名1=值1,形参名2=值2...’
3)、位置参数和关键字参数混用---------->混用的时候必须保证位置参数在关键字参数的前面,同时保证每个参数必须有值
2、参数默认值
- 声明函数的时候,可以通过'参数名=值'的形式给参数默认值;有默认值的参数在调用时可以不赋值
- 关键参数的使用场景:想要跳过前面有默认值的参数给后面的参数赋值时只能用关键字参数
- 有默认值的参数必须放在没有默认值的参数的后面
3、参数类型说明
1)、给参数赋默认值,默认值是什么类型,就默认参数是什么类型
2)、在形参后面加冒号加类型名,形参:类型名
3)、在形参括号后面加类型名,表示返回值的类型: # def diy_print2(a=1, b=5, c=30) -> str:
4、不定长参数
声明函数的时候参数个数不确定
①、声明函数时在参数名称前加星号*,这个参数就会变成一个元素,元组内的元素就是对应的实参;
注意:a.只能使用位置参数赋值
b.不定长参数后面如果有其他的定长参数,那么后面的参数必须使用位置参数赋值
def func(*x):
def func(name, *grade):
def func(name, *grade, tel):
②、声明函数时在参数名称前加两个星号**,这个参数就会变成一个字典(关键字:实参值)
注意:a.只能使用关键字参数赋值
b.和**同时使用还是不定长参数,可以同时使用位置参数和关键字参数;(要放到**前面)
③、一个星和两个星一起用:
def func(*args, **kwargs):