python匿名函数可以定义参数为空_python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程...

本文介绍了Python中的函数定义、参数传递方式(位置参数、关键字参数、可变参数*args和**kwargs)、默认参数、递归函数的工作原理、函数作用域以及匿名函数(lambda)的使用。详细阐述了如何定义和调用函数,以及函数式编程的特点。
摘要由CSDN通过智能技术生成

python学习7—函数定义、参数、递归、作用域、匿名函数以及函数式编程

1. 函数定义

deftest(x)#discription

y = 2 *xreturn y

返回一个值,则返回原本的object;

过程与函数的区别,过程无return返回值,但是python会自动赋予一个None返回值。

deftest(x)#discription

y = 2 *xprint(y)

若返回多个值,python会将多个元素包装成一个元组,并返回。即实际上仍然只返回一个值。

函数只要碰到第一个return就会结束调用。

2. 传参数的方法

位置参数,一一对应

关键字参数,不须一一对应

test(x=5)

混用位置参数与关键字参数时,位置参数必须位于关键字参数前面,且同一个形参不能传多个值。

3. 参数组

可变长短的参数,*args,**kwargs

*的作用就是for循环取参数

def test(x,*args)print(x)print(args[1])

test(1,2,3,4,5,6)

test(1,[2,3,4,5])  #传入整个列表作为一个整体

test(1,*[2,3,4,5])  #传入列表中的单个元素

**kwargs处理键值对,字典

def test(x,**kwargs)print(x)print(kwargs)

test(1,y=2,z=3)

连起来用,*args必须位于**kwargs前面

def test(x,*args,**kwargs)print(x)print(args)print(kwargs)

test(1,2,3,5,66,y=2,z=3)

test(1,*[1,1,2,3],**{'y':1})

4. 默认参数

如果定义函数时指定了默认参数,则在调用时可指定该参数,也可忽略该参数。

def test(x,y,z=2):print(x,y,z)

test(1,2)

test(1,2,5)

5. 递归函数

递归类似函数递推公式:

#recursion

defcalc(n):print(n)if int(n/2) ==0:returnnelse:return calc(int(n/2))

calc(10)

函数递归调用过程如下图所示,递归函数重复调用自身,相当于重复调用子函数,当最终嗲用结束时,最内层的子函数返回值逐层返回给各个子函数

b44fe0da682e9d9fa0321126e11995af.png

6. 函数作用域

一个函数在调用时,不管在哪里调用,都只与该函数在定义时有关系。嵌套定义的函数必须从外层到内层逐层调用,不可只运行嵌套定义的子函数。

deffoo():

name= 'abc'

defbar():

name= 'xyz'

print(name)deftt():print(name)returnttreturnbarprint(foo()()())

7. 匿名函数

匿名函数使用lambda关键词定义,需将lambda赋值给一个变量才能调用该匿名函数,lambda会自动将冒号后面的内容return返回给函数句柄。

#the next two functions are of the same function#first

defcalc(x):return x+1

#second

func = lambda x:x+1

#lambda(10) is wrong

print(func(10))

lambda匿名函数的定义相当于一个值,如果不赋值给一个变量,则此匿名函数会在定义后在内存里立即被释放

lambda函数不能返回复杂逻辑,只能返回一行,一个确定的最终的结果

若需要返回多个值,则需要手动组成一个元组,这里与用def定义的函数不同

lambda x,y,z:(x+1,y+1,z+1)

8. 编程风格(方法论)

面向过程编程

函数式编程不用变量保存状态,不修改变量

函数即变量地址

高阶函数:函数接收的参数是函数名,或函数的返回值中包含函数

尾调用优化:函数在最后一步调用另一个函数

面向对象编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值