一、函数示例
print()、round()

round(需要操作的变量,需要保留的小数位数)
函数的特性:1.功能性,有明确的功能
2.隐藏细节
3.避免重复代码
二、使用def定义函数
2.1 def funcname(parameter_list):
pass->代表函数体,即函数中需要执行的代码块
python中可以使用return来返回值,如果没有return,则默认返回的是none

注:以下代码中,print()会形成一个递归函数,运行会报错

提示超出了最大限制的递归次数,这个递归次数可以人为更改,更改代码如下:
import sys
sys.setrecursionlimit(1000000)
注:自己设置的递归次数,不一定会成功执行,超出python规定的最大次数会执行失败
2.2 打印参数,print(变量1,变量2,...),示例

因为print_test()中没有return,所以b = none
2.3 函数返回多个结果
return 返回值1,返回值2,...
python中会将返回的多个值归为元组

返回的多个值,可以使用序列解包的方法进行赋值,即:变量1,变量2,... = 函数(参数1,参数2,...)
示例如下:

2.4 序列解包
2.4.1多个变量赋相同的值时,可以简化为:变量1=变量2=变量3 = 值
如:
与
的效果一样
2.4.2 序列解包:变量1,变量2,... = 值1,值2,...

给d赋多个值时,即使不加括号,d也是元组类型
与
的效果一样
三、参数
3.1必须参数:在函数中定义的参数,在调用此函数时是必须要传入值的
此时a使用的是必须参数
形式参数:定义函数时的参数变量
实际参数:调用函数时传入的参数的实际值
3.2 关键字参数:调用函数时,格式为:函数名(形参1=实参1,形参2 = 实参2),这样可以提高函数的可读性
此时使用的是关键字参数,关键字参数可以不用考虑参数的排序,因为指名了给哪个参数赋值
必须参数与关键字参数的区别在于函数的调用上
3.3 默认参数:定义函数时,给部分参数传入固定的值,调用此函数时只需要给其它参数传入值就可以了
注:3.3.1函数中,必须传入的参数要放在默认参数前面,如:
必须传入的参数不能放在默认参数后面,以下代码会报错
3.3.2调用函数时,只更改部分默认参数的值时,可使用关键字参数的传入方法,如

3.3.3调用函数时,关键字参数不能与其它形式的参数穿插使用,如下:

3.4可变参数:函数的参数个数未知时,使用“*参数名”定义的参数为可变参数
且被传入的多个参数会被看为一个元组
注:传参时,若传入的是一个元组,那么结果会变为二维元组,如:
此时若不想结果变为二维元组,可以在传值时,给值前面加一个*,如:
这个相当于将元组a中的值平铺到函数的参数中
可变参数可以与其它参数一起使用,顺序优先级为:必传参数>可变参数>默认参数,如果不按这个顺序排列,代码运行时虽不会报错,但是会与预期结果相差,如:
此时将1的值传给了默认参数,将1,2,3括起来成为一个元组,也会将值传给默认参数,而无法传给可变参数,如
将默认参数放到最后时,可将1,2,3的值传给可变参数,如:
注:参数有可变参数,也有默认参数时,调用函数时,若要改变默认参数的值应使用关键字参数的方式给默认参数赋值,如:
未使用关键字参数的方式时运行如下:

使用关键字参数的方式运行结果如下:

3.4.1 可变参数,大多使用for循环来遍历

实际写代码中,不建议将函数的参数写的这么复杂
3.5 关键字可变参数
3.5.1 关键字可变参数使用**param
说明关键字可变参数一个字典
3.5.2 遍历关键字可变参数,使用以下方法:
a)遍历所有的key:for key in param.keys()
b)遍历所有的value:for value in param.values()
c)遍历所有的key和value:for key,value in param.items()

解包序列的方法:
a = {'stu1':87, 'stu2':93}
student_score(**a) 
本文详细介绍了Python函数的基础概念,包括函数的定义与使用方法、参数传递方式等,并通过具体示例展示了如何利用函数实现代码复用及提高程序的可读性和维护性。
103

被折叠的 条评论
为什么被折叠?



