2020-10-31

本文介绍了编程中的变量作用域,包括全局变量和局部变量的使用规则。接着讲解了匿名函数(lambda)的简洁语法及其应用。然后讨论了递归函数的概念,强调了其优缺点,并提醒注意防止栈溢出。最后,详细阐述了生成器函数的工作原理,如何通过yield关键字实现数据的延迟计算,并展示了如何使用生成器处理大量数据和实现斐波那契数列的例子。
摘要由CSDN通过智能技术生成

变量的作用域

  1. 变量作用域就是定义的变量可以使用的代码范围。
  2. 全局变量:一般直接定义在函数的外部或者用global关键字在函数内部定义,可以被所有的函数访问,除非被删除,否则一直存活到脚本运行结束。
  3. 局部变量:只能在函数或代码块内部被调用,引用比全局变量速度快,可优先考虑使用。
  4. 注意:(在函数中使用全局变量时,可以调用全局变量的值,不能直接修改全局变量。如果值是可变的类型,值是可以改变的)

匿名函数

  • 语法格式:lambda 参数1,参数2,…,参数n:返回值。

print((lambda x,y,z:x+y+z)(1,2,3))

在这里插入图片描述

递归函数

  • 程序调用自身的编程技巧称为递归。
  • 在这里插入图片描述
    **递归函数优缺点:**优点:优点:定义简单,逻辑清楚。
    缺点:递归效率不高,因为每一次调用都有相应的数值存放在栈,而栈的空间是有限的
    因此在写函数时候要注意不可无限递归或者递归次数非常大,防止栈溢出。

生成器函数

1.一个包含yield关键字的函数就是一个生成器函数。并且yield不能和return共用。
2.执行了__next__()方法之后才会执行函数体,并且获得返回值。next()内置方法,内部调用生成器函数的__next__()方法。
3.yield和return相同的是可以返回值,但是不同的是yield 不会结束函数

  • 当我们处理大量数据时,一个个获取数据,以节省内存空间。
def func():
	yield"a"
	yield"b"
	yield"c"
  • 执行生成器函数时,返回生成器对象。
  • 只有使用next()函数执行生成器对象或循环生成器对象时,才会一个个返回数据。
g = fun()
for i in g:
 print(i)
 
t = ( i for i in range(10) if i % 2 == 0 )
print(t)
print(next(t))
  • 使用生成器实现斐波那契数列(兔子数列)
def fibonacci(n):
	a,b = 0,1
	while a < n:
		yield a 
		a,b = b,a+b 
		 		
for i in fibonacci(100):
	print(i)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值