1、函数
1、认识函数
1)定义:函数就是对实现某一特定功能代码的封装;
2)函数的分类
a.系统函数(系统造好的机器) - 由python创建好的函数,例如:print,input,type,max,min,id.....
b.自定义函数(自己早机器) - 由程序员自己创建的函数
2、函数的定义
语法:
def 函数名(形参列表):
函数说明文档
函数体
说明:
a.def - 关键字;固定写法
b.函数名 - 由程序员自己命名
要求:是标识符,不能是关键字
规范:1)见名知义;(看到函数名大概知道这个函数的功能是多少)
2)所有的字母都小写,多个单词之间用下划线隔开
3)不使用系统的函数名、类名和模块名
c.() - 固定写法
d.形参列表 - 以‘变量名1,变量名2....‘格式存在,这儿的每一个变量就是一个形参,如果不需要形参,括号里边可以什么都不写
形参是用来将函数外部的数据传递到函数内部(可以理解成连接函数外部和内部的通道),需不需要形参就看实现 函数的功能需不需要额外的数据
e. : - 固定写法
f. 函数说明文档 - 本质就是文档注释(对函数功能进行描述)
g.函数体 - 和def保持一个缩进的一条或者多条语句(实现函数功能的代码)
3、调用函数
1)重要结论 定义函数的时候不会执行函数体,调用数据的时候才会执行函数体(调用多少次就会执行多少次) 2)调用函数 语法:函数名(实参列表) 说明: a.函数名 - 需要使用的函数名字(函数名必须是已经定义过的函数的函数名) b.() - 固定写法 c.实参列表 - 多个数据用逗号隔开:数据1,数据2,… 原则上定义函数的时候有多少个形参,调用函数的时候就需要多少个实参(实参可以是任何有结果的表达式(只要不是赋值语句就可以)) 3)函数调用过程: 当代码执行到函数调用表达式的时候: 第一步:回到函数定义的位置,用实参给形参赋值(传参) 第二步:执行函数体 第三步:确定函数返回值 第四步:回到函数调用的位置,接着往后执行
4、返回值 - 将函数内部的数据传递到函数外部
1)怎样将一个数据作为函数的返回值
语法:
return 需要返回的数据(需要从函数内部传递到函数外部的数据)
2)怎样在函数外部获取函数的返回值
获取函数调用表达式的值就是获取函数的返回值(也就是函数调用表达式的值就是函数的返回值)
返回值能做的事情,函数调用表达式都可以做
5、return关键字
return的作用有两个:
1)确定函数返回值(将函数内部的数据传递到函数外部)
2)提前结束函数(在执行函数体的时候,如果遇到了return,那么函数直接结束)
6、函数的参数
1)位置参数和关键字参数 - 根据实参提供的方式分的类
1)位置参数 - 直接将多个数据用逗号隔开,让实参和形参从位置上面一一对应(第一个实参给第一个形参赋值,依次往后)
2)关键字参数 - 以’形参=实参‘的形式传参
3)位置参数和关键字参数混用 - 位置参数必须在关键字参数的前面
2)参数默认值
在定义函数的时候可以通过’形参=数据’给参数赋默认值,调用函数的时候有默认值的参数可以不用传参,定义函数的时候可以只给部分参数设置默认,那么这个时候没有默认值的参数必须在有默认值的参数前面
3)参数类型说明和返回值类型说明
参数类型说明和返回值类型说明
参数类型说明:1)无默认值参数;类型名
2)参数带默认值(默认值是什么类型,参数就是什么类型)
返回值类型说明: -> 类型名
def func(x:list, y='') -> list
pass
4)不定长参数 - 一个形参可以同时接收多个实参
1)在参数名前加*,那么这个参数就可以同时接收多个实参(必须是位置参数)
原理:带*的参数会变成一个元组,接收到的实参会变成元组中的元素
注意:带*号的不定长参数在传参的时候只能用位置参数
重要结论:定义函数的时候,如果参数中有一个独立的*,它的作用是让你在调用这个函数的 时候*后面的参数必须使用关键字参数
2)在参数名前加**,那么这个参数可以接收多个参数(必须是关键字参数)
原理:带**的参数会变成一个字典,接收到的参数会变成字典中的键值对
def fun(*x, y, z):
print(f'x:{x},y:{y},z:{z}')
fun(20, 30, 10, y=50, z=90)
|