Skip to content

函数

一、函数定义和调用

py
# 定义函数
def 函数名(形参):
  函数体
  return XXX

# 调用函数
函数名(实参)

二、函数参数传递

  1. 位置实参:根据形参对应的位置进行实参传递

  2. 关键字实参:根据形参名称进行实参传递

py
def calc(a, b):
    c = a + b
    return c

calc(10, 20)  # 位置参数
calc(b=10, a=20)  # 关键字参数
  1. 函数调用过程中如果是不可变对象,函数体的修改不会影响实参的值,如果是可变对象,则函数体的修改会影响实参的值

三、函数返回值

  1. 若函数没有返回值,则return可省略不写
  2. 若函数返回值只有一个,则直接返回原类型
  3. 若函数返回值有多个,则返回的结果为元祖

四、参数定义

  1. 函数的默认参数
py
def fun(a, b=10):
    print(a,b)

fun(10)  # a=10,b=10
fun(10,20)  # a=10,b=20
  1. 个数可变的位置参数*args

使用*定义个数可变的位置参数,结果为一个元祖

py
def fun(*a):
    print(a)

fun(10)  # (10,)
fun(10,20,30)  # (10, 20, 30)
  1. 个数可变的关键字参数**kwargs

使用**定义个数可变的关键字参数,结果为一个字典

py
def funs(**b):
    print(b)

funs(a=10)  # {'a': 10}
funs(a=10,b=20,c=30)  # {'a': 10, 'b': 20, 'c': 30}

递归函数

  1. 递归函数概念

如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数 2. 递归函数的组成部分

递归的调用与递归的终止条件

  1. 递归的调用过程

每递归调用一次函数,都会在栈内存分配一个栈帧,每执行完一次函数,都会释放响应的空间

  1. 递归的优缺点
  • 优点:占用内存多,效率低
  • 缺点:思路和代码简单
  1. 递归函数应用

使用递归函数计算阶乘

py
# 使用递归函数计算阶乘
def fac(n):
    if n == 1:
        return 1
    else:
        res = n * fac(n - 1)
        return res

print(fac(6))

斐波那契数列

py

def fac(n):
    if n == 1:
        return 1
    elif n == 2:
        return 1
    else:
        res = fac(n - 1) + fac(n - 2)
        return res

# 输出前六项
for i in range(1,7):
    print(fac(i),end='\t') 
    #1	1	2	3	5	8