py基础系列(四):函数

函数定义

有参函数

定义形式:

def   函数名( [形式参数列表] ):    函数体

无参函数

定义形式:

def 函数名(): 函数体  # 即使无参,括号也不能省略    函数体

与Java语言不一样,Python中无需指定返回值的数据类型。每一个Python函数实际上都有一个返回值。如果函数的return有指定返回值,将执行返回值,否者返回值为None。

(1)return语句没有指定返回值, 则默认返回None

在这里插入图片描述

(2)return语句指定返回多个值
函数也可以返回多个值。定义时将需要返回的多个值依次放在return的后面,用逗号隔开。实际返回一个数组

在这里插入图片描述

(3)多个return语句
一个函数的函数体中可以有多个return语句,当执行其中任意一个return语句后,本函数体的执行就结束,

在这里插入图片描述

函数调用

调用时一定要有小括号。没有小括号在Python中不会报告语法错误,但就不是调用函数,相当于函数重命名。

函数名()
d=sum   # 缺失括号,相当于给sum起了个别名 d c= d(8,3)

函数参数

不可变对象和可变对象参数

不可变对象:数字、字符串和元组
可变对象:列表、字典、集合

(1)不可变对象做参数
不可变对象作为函数实参时,如果在函数体内改变形参的值,不会导致实参值发生改变。

在这里插入图片描述

(2)可变对象做参数
可变对象作为函数实参时,在函数体内改变形参的值将导致实参的值发生改变

在这里插入图片描述

默认值参数

定义形式:

def 函数名(, 形参名=默认值):
    函数体

# 函数名__defaults__ 查看函数所有默认值的设置值,返回值为一个元组

(1)设置了默认值的参数只在定义时解释和初始化一次。
一个形参如果设置了列表、集合及字典等可变类型的默认值,那么第一次使用默认值时,形参的值为设置的默认值,以后继续调用函数则不会再次用默认值初始化

在这里插入图片描述

(2)如果调用时给默认值参数传了值,那么它对默认值形参的变化情况没有影响

在这里插入图片描述

不定长参数

不定长参数指的是形式参数没有指定个数,从而达到可以传入任意个数的实参。

(1)第一种定义不定长参数的形式:

def 函数名(*形参名):    
    函数体

系统将传递进来的任意数量的实参组合成一个 元组 传给形参。
在这里插入图片描述

(2)第二种定义不定长参数的形式:

def 函数名(**形参名):     
    函数体

系统将传递进来的任意数量的、显式赋值的实参组合成一个 字典 传给形参。
在这里插入图片描述

实参序列解包

当形参有多个时 ,可以使用列表、元组、集合、字典及其他可迭代对象作为实参,并在实参名称前面加上一个星号(*),Python解释器会首先将实参序列解包,然后将序列中的值分别传递给形参变量。

在这里插入图片描述

lambda表达式

一般形式:

lambda 形参列表: 表达式 #这个表达式只能是简单语句 不能有if分支等结构

在这里插入图片描述

也可以将lambda表达式变成命名函数,
一般形式:

函数名 = lambda 形参列表: 表达式

例如, f = lambda x, y: x + y

嵌套定义

嵌套定义即在函数体内再定义另一个函数。函数也跟变量一样有作用域,嵌套定义的函数不能被外部直接使用,否则会抛未定义变量异常。

这里的inner函数就像当于outer函数的局部变量。

在这里插入图片描述

被嵌套的函数不会随着外部函数的执行而自动执行,只是完成定义。要执行被嵌套的函数,需要在外部函数的函数体内显式地调用它

在这里插入图片描述

修饰器

修饰器也是一个函数,它接收其他函数作为参数,在此基础上加上一些功能作为修饰后返回新函数
在定义函数main()之前加上@ decorator以使用该修饰器

在这里插入图片描述
在这里插入图片描述

生成器函数

生成器函数是指一个包含了yield语句的函数,生成器函数可以用来创建生成器对象。yield语句返回值并暂停函数的运行,生成器是一个迭代器,所以下次可以通过生成器对象的__next__()函数、内置函数next或for循环遍历生成器对象时再恢复执行,并从yield语句的后一条语句继续执行。

需要注意的是,yield 不能和 return 共用且需要写在函数内。yield和return一样,都可以返回值,但是 return 在返回值之后就直接结束一个函数,而 yield 不会。

生成器对象具有向前性即一次性使用不能再回头

在这里插入图片描述

需要重新生成一个生成器对象才能从头再遍历该对象

在这里插入图片描述

参考资料

B站李老师的 Python编程和数据分析基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值