一、什么是函数?函数有什么作用?
定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。使用关键字def定义。
作用:
-
- 可以重复使用,提高代码的重用性。
- 可以实现某个具体功能。
定义:
def 类名(参数):
函数体
注意:
-
- 函数名:def_mult_two_num(a, b):
- 函数有return语句,返回值为return的值;
- 如果执行了return,return后面的语句将不再执行;
- 没有return语句,返回值为None;
二、函数的参数类型
首先明确,函数定义时,函数名后面括号内的参数叫【形式参数】。函数调用时,括号内的参数叫【实际参数】。
参数类型:位置参数、默认参数、关键字参数、动态(可变)参数、含关键字的动态(可变)参数
- 位置参数:形参实参的类型一致,且个数和位置要一一对应
- 默认参数:在定义时给形参赋值,当调用时没有传实参时则使用定义时赋值的默认参数,有传参时用实参的值。
默认参数要放在非默认参数后面
- 关键字参数:根据参数名来传入参数值,无须遵守定义形参的顺序。
实参关键字要和形参对应,不一致或者个数多了、少了,程序都会报错。
实参才有关键字参数这种说法
def Loc_Func(name, age, sex, hobby, motto = "keep on learning"): print(name, age, sex, hobby, motto) Loc_Func("Rachel", 18, sex="女", hobby="Swimming")
Rachel 18 女 Swimming keep on learning
- 可变参数:
- 动态参数:定义时形参用一个*+变量名:*args ,将形参接收到的所有位置参数保存在一个【元组】中,不知道函数需要接收多少个实参时使用
- 含关键字的动态参数:定义时形参使用两个*+变量名:**kwargs,把所有的关键字参数,保存在【字典】中,调用时必须带有关键字且必须使用关键字,
def Fuc(*args, **kwargs): print(args) print(kwargs) pass one_tuple=(1, "day") one_dict={"name": "Rachel", "age": 10} Fuc(10, "daily", name="Rachel", age=10) # 位置参数要放在关键字参数前面 Fuc(*one_tuple, **one_dict) # *args要在**kwargs前面
(10, 'daily') # args 为【元祖】类型
{'name': 'Rachel', 'age': 10} # kwargs为【字典】类型
(1, 'day')
{'name': 'Rachel', 'age': 10}
三、局部变量和全局变量
局部变量:是指函数体内部定义的变量
全局变量:是指函数外部定义的变量
如何在函数内部定义全局变量?
使用关键字global,此时的变量a,虽然定义在函数内部,但是依然是【全局变量】
def f():
global a
a = 5
print(a)