Python笔记(二)

1.匿名函数:
定义时没有函数名的函数,临时只使用一次的简单函数,一般用于给高阶函数传参

#lambda参数一,参数二... :返回值
print((lambda x,y,z :x+y+z)(1,2,3))
print((lambda name:"hello"+name)("小明"))
add = lambda x,y : x+y
print(add(3,4))
input()

2.递归函数:
程序调用自身的编程技巧称为递归
递归函数:在函数内部调用自己的函数
递归函数要有结束条件,用于退出递归

def func(n):
			if n ==1 or n==0 :
					return 1
			else:
			return n*func(n-1)
print(func(5))
  • 凡是可以使用递归实现的问题,使用循环也可以实现
  • 使用递归可以写出简介的代码
  • python递归的层数是有限制的(998层
  • 递归会消耗大量系统资源,执行效率较低

3.生成器函数:

  • 在生成器函数中用yield关键字来返回数据
def func():
		for i in range(65,92):
			yield chr(i)
print(func()) #生成器对象
 input()
  • yield返回数据后,函数没有结束,只是暂停
  • 生成器对象:生成器函数执行后的结果
    next(生成器对象) ——> 值
for i in 生成器对象:
       print(i)
gen = func ():   #生成器对象
			print(next(gen))
 for i in gen:
 			print(i)
  • 生成器的值是一个一个返回的
  • 使用场景:处理大量数据,节省内存空间

**生成器–斐波那契 **

def ():
	a,b=1,1
	while True:
	 		yield a    #暂停执行,需要时再产生一个新元素
	 		a,b = b, a+b		#继续生成新元素
	 a=f()
	 for i in range(10):
	 	print(next(a),end=' ')

4.高阶函数:
两个条件:

  • 函数可以作为参数被传递
  • 函数可以作为返回值输出
import math
def add(x,y,f):
	reurn f(x)+f(y)
add(4,9,math.sqrt)      #5.0

作用:让代码编写异常灵活

  • 函数+"()"执行函数,结果是函数的返回值
  • 定义好的函数,使用函数名调用,(函数对象)
  • 将函数作为高阶参数时,不能加()

5.装饰器函数:

  • 不修改其他函数代码

  • 给其他函数增加或修改功能的函数
    装饰器函数是高阶函数

  • 它将原函数作为参数

  • 一般在装饰器中需要定义一层或两层内部函数

  • 原函数需要在装饰器内部的函数中执行

  • 将内部函数作为返回值返回

log_info(function) :
def run(*args,**kwargs):
	print("开始运行......")
	res = function(*args,**kwargs)
	print("运行结束......")
	return res
return run

加装饰器,只需在函数的定义面前加上 @装饰器名称
使用多个装饰器时,可累加,添加到每个需要装饰的函数前

@log_info       #装饰器函数   装饰器语法糖   func = log_info(func)
def func():
	for i in range(10):
		print(i)
print(func)  #run()

@log_info
def add(x,y):
		return x+y
print(add(1,2))

装饰器的应用场景:

  • 给大量函数增加相同功能时使用
  • 日志装饰器,测试装饰器,功能增强
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值