【Python】13.函数

文章介绍了Python中函数的基本概念,包括函数的创建与调用、参数传递(位置实参、关键字实参)、返回值(单个与多个)、参数定义(位置参数、默认值参数、可变参数)以及变量的作用域。还探讨了递归函数的应用,如计算阶乘,以及使用斐波那契数列作为示例展示了递归的实现。
摘要由CSDN通过智能技术生成

1.函数的创建与调用

什么是函数?
执行任何完成特定功能的一段代码

为什么需要函数?

  • 复用代码
  • 隐藏实现细节
  • 提高可维护性
  • 提高可读性便于调试

函数的创建

def 函数名([输入函数]):
    函数体
    [return xxx]

函数的调用

函数名([实际参数])

2.函数的参数传递

形参的位置在函数的定义处,实参的位置在函数的调用处

  1. 位置实参:根据形参对应的位置进行实参传递
  2. 关键字实参:根据形参名称进行实参传递

3.函数的返回值

  1. 如果函数没有返回值,即函数执行完毕之后,不需要给调用处提供数据,return可以省略不写
  2. 函数的返回值,如果是一个,直接返回类型
  3. 函数返回多个值时,结果为元组
def fun(num):
    odd = []    #存奇数
    even =[]    #存偶数
    for i in num:
        if i%2:
            odd.append(i)
        else:
            even.append(i)
    return odd,even

#函数的调用
lst = [10,29,34,23,44,53,55]
print(fun(lst))

#输出为([29, 23, 53, 55], [10, 34, 44])

4.函数的参数定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关于实参

def fun(a,b,c):     #a,b,c在函数的定义处,所以是形式参数
    print('a=',a)
    print('b=',b)
    print('c=',c)

fun(10,20,30)       #函数调用时的参数传递,所以是位置传参

lst = [10,20,30]    
fun(*lst)     #在函数调用时,将列表中的每个元素都转换成位置实参传入

fun(a=100,b=300,c=200)      #函数的调用,所以是关键字实参
dic={'a':111,'b':222,'c':333}
fun(**dic)      #在函数调用时,将字典中的每个键值对都转换成关键字实参传入

关于形参

def fun1(a,b=10):    #b是在函数的定义处,所以b是形参,且进行了赋值,所以是默认值形参
    print('a=',a)
    print('b=',b)

def fun2(*args1):   #个数可变的位置形参
    print(args1)

def fun3(**args2):  #个数可变的关键字形参
    print(args2)  

fun2(10,20,30,40)
fun3(a=10,b=20,c=30,d=40)

def fun4(a,b,*,c,d):     #从*之后的参数,在函数调用时,只能采用关键字参数传递
    print('a=',a)
    print('b=',b)
    print('c=',c)
    print('d=',d)
#调用fun4函数
fun4(10,20,30,40)   #位置实参
fun4(a=10,b=20,c=30,d=40)   #关键字实参
fun4(10,20,c=30,d=40)   #前两个参数采用位置实参传递,而c和d采用的是关键字实参传递

5.变量的作用域

在这里插入图片描述

def fun():
    global age  #函数内部定义的变量,局部变量使用global声明,变成全局变量
    age = 20
    print(age)
fun()
print(age)#要调用子函数,才能运行

6.递归函数

在这里插入图片描述

#计算阶乘
def fac(n):
    if n==1:
        return 1
    else:
        return n*fac(n-1)

print(fac(6))

7.斐波那契数列

#计算斐波那契数列
def fib(n):
    if n==1:
        return 1
    elif n==2:
        return 1
    else:
        return fib(n-1)+fib(n-2)

print(fib(6))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值