【Python】函数

本文为 Python 学习笔记,讲解函数。欢迎在评论区与我交流👏

函数的创建和调用

在这里插入图片描述

demo:

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

result = calc(10, 20)
print(result)

函数的参数传递

函数调用的参数传递

在这里插入图片描述

位置实参

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

result=calc(10, 20)
print(result)

关键字实参

在这里插入图片描述

res=calc(b=10, a=20)
print(result)

函数调用的参数传递内存分析图

在这里插入图片描述

因为 Python 中给变量赋值是让变量指向值的地址,因此在函数结束回收变量空间时,对局部变量的修改会消失:

def fun(arg1, arg2):
    print('arg1', arg1)
    print('arg2', arg2)
    arg1=100
    arg2.append(10)
    print('arg1', arg1)
    print('arg2', arg2)
    return

n1=11
n2=[22, 33, 44]
print('n1', n1)
print('n2', n2)
fun(n1, n2)
print('n1', n1)
print('n2', n2)

输出结果:

在这里插入图片描述

如果是不可变对象,在函数内修改不会影响实参的值,arg1 修改为 100,不会影响 n1 的值

如果是可变对象,在函数内修改会影响实参的值,arg2 修改为 append(10),会影响到 n2 的值

函数的返回值

如果函数返回值为多个,则返回元组

函数的参数定义

函数定义默认值参数

在这里插入图片描述

print 源码定义:

在这里插入图片描述

这里 end\n 换行,因此 print 默认换行。

个数可变的位置参数

定义函数时无法事前确定实参个数。使用 * 定义,结果为元组

在这里插入图片描述

print 函数也有该参数,因此 print 中可输出任意多的值。

在这里插入图片描述

个数可变的位置参数在一个函数中只能有一个。下面的代码会报错:

在这里插入图片描述

个数可变的关键字参数

定义函数时无法事先确定关键字实参个数,使用 ** 定义,结果为字典

在这里插入图片描述

个数可变的关键字参数也只能有一个:

在这里插入图片描述

一个函数中同时有个数可变的关键字形参和个数可变的位置形参时,个数可变的位置形参要放在个数可变的关键字形参之前:

def fun2(*args1, **arg2):
    pass

函数的参数总结

在这里插入图片描述

将序列中的每个元组都转换为位置实参:

def fun(a, b, c):
    print('a=', a)
    print('b=', b)
    print('c=', c)

fun(10, 20, 30)
lst=[11, 22, 33]
fun(*lst)

将字典中的每个键值对都转换为关键字实参:

dic={'a':111, 'b':222, 'c':333}
fun(**dic)

* 强制后面的参数只能使用关键字参数传递 :

def func4(a, b, *, c, d):
    print('a=', a)
    print('b=', b)
    print('c=', c)
    print('d=', d)

# func4(10, 20, 30, 40) # 报错
func4(10, 20, c=30, d=40)

变量的作用域

局部变量使用 global 定义变为全局变量:

def fun():
    global age
    age=20

fun()
print(age)

递归函数

def fac(n):
    if n==1:
        return 1
    else:
        res=n*fac(n-1)
        return res

print(fac(6))

总结

在这里插入图片描述

有用的话点个赞加关注吧 😉

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值