一 函数基础
1 什么是函数
函数就是具备某一功能的工具,事先将工具准备好就是函数的定义,遇到应用场景拿来就用就是函数的调用
2 为什么要用函数
程序冗长
程序的扩展性差
程序的可读性差
3 如何使用函数
(1)定义函数
def 函数名(): 代码块 # 实现某一个具体的功能 # 函数名有某种意义;# 函数名接收变量值;# 函数名只能使用字母、数字、下划线组成,并且第一个字符不能是数字,也不能是下划线
(2)调用函数
函数名(param1、param2……)
定义函数:本来报错的东西不会报错,定义函数阶段只识别语法(10bac报错),不运行代码 (*****)调用函数:才执行函数体代码(*****)
二 定义函数的三种形式
1无参函数
def self_max(): x, y = 10, 20 if x > y: print(x) else: print(y)self_max()
2 有参函数
def self_max(x, y): if x > y: print(x) else: print(y)self_max(100,500)
3 空函数
def self_max(): passself_max()
三 函数的返回值
1 什么是返回值
函数内部代码经过一些列逻辑处理获得的结果
2 为什么要有返回值
如果需要在程序中拿到函数的处理结果做进一步的处理,则需要函数必须要有返回值
return是一个函数结束的标志,函数内可以有多个return,只要执行到return,函数就会停止。
return的返回值可以返回任意数据类型
return的返回值无个数限制,即可以使用逗号隔开返回多个值
0个:返回None
1个:返回值是该值本身
多个:返回值是元组
def self_max(x,y): # x=1000,y=100 if x> y: return x else: return ymax_num = self_max(1000,100)print(max_num)
四 函数的调用
1 什么是函数调用
函数名(param1、param2……)即调用函数,会执行函数体代码,直到碰到return或者执行完函数体内所有代码结束
函数运行完毕所有代码,如果函数体不写return,则会返回None。
2 为什么调用函数
使用函数的功能
五 函数参数的应用
1 形参
函数定义阶段括号内定义的参数,称之为形式参数,简称形参,本质就是变量名
def func(x, y): print(x) print(y)
2 实参
在函数调用阶段括号内传入的参数,称之为实际参数,简称实参,本质就是变量的值
func(1, 2)
3 位置形参
在函数定义阶段,按照从左到右的顺序依次定义的形参,称之为位置形参
def func(x, y): print(x) print(y)
4 位置实参
在函数调用阶段,按照从左到右的顺序依次定义的实参,称之为位置实参
特点:按照位置为对应的形参依次传值
func(1, 2)
5 关键字实参
在调用函数时,按照key=value的形式为指定的参数传值,称为关键字实参
特点:可以打破位置的限制,但仍能为指定的形参赋值
func(y=2, x=1)
注意:
- 可以混用位置实参和关键字实参,但是位置实参必须在关键字实参的左边。
- 可以混用位置实参和关键字实参,但不能对一个形参重复赋值。
6 默认形参
在定义阶段,就已经被赋值
注意:
- 位置形参必须放在默认形参的左边。
- 默认形参的值只在定义阶段赋值一次,也就是说默认参数的值在函数定义阶段就已经固定了。
def func(x, y=10): print(x) print(y)
六 可变长参数
1 可变长形参
argsFunc
中匹配完定义好的参数,剩余的参数以元组的形式存储在 args(args 名称你可以自行定义)def argsFunc(*my_args): print (my_args)argsFunc(1, 2, 3, 4)(1, 2, 3, 4)argsFunc()
形参名前加两个*表示,参数在函数内部将被存放在以形式名为标识符的
dictionary
中,这时调用函数的方法则需要采用arg1=value1,arg2=value2
这样的形式。
def a(**x): print (x)a(x=1,y=2,z=3){'y': 2, 'x': 1, 'z': 3}