函数作用域和匿名_第1页
函数作用域和匿名_第2页
函数作用域和匿名_第3页
函数作用域和匿名_第4页
函数作用域和匿名_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python基础课教室讲师:无名时间:2018年5月教学监督热线免责声明:如果本课程内有任何内容侵害了您的权益,请您及时联系我们潭州教育全球教学服务中心热线:教学监督热线01020304必须掌握:函数的定义和函数的调用必须掌握:return的作用必须掌握:三种参数的定义了解讲过的内置函数知识点回顾本节知识点01.匿名函数02.函数作用域03.闭包04.递归和回调函数教学监督热线第一部分匿名函数教学监督热线思考01上节课的filter函数,可以过滤出列表中大于3的数据,但是使用都需要提前定义一个函数,有没有更加简便的方式呢?匿名函数lambda0102filter(lambdax:x>10,li)语法规则:lambda参数:表达式简单函数函数调用提高开发效率匿名函数的合理利用能够让那个代码更加简洁类似于filter、map等函数里面,可以使用匿名函数来处理简单的函数,可以不用使用def定义一个函数,使用匿名函数即可匿名函数应用场景匿名函数总结必须掌握:匿名函数的用法熟悉匿名函数的使用第二部分函数作用域教学监督热线思考01在函数里面也有可以定义变量,那函数里面的变量名如果和函数外面的变量名重名,会相互影响吗?示例03040102外部不能访问函数内部变量:deffun1(): x=1

returnx函数内部能够访问函数外部变量:x=123deffun2():

print(x)

returnx+1函数里面不能修改函数外部变量:x=123deffun3(): x=x+1

returnx函数里面和函数外部变量名相同:x=123print(x,id(x))deffun4():

x=456

print(x,id(x))

x+=1

returnxglobal和nonlocal01

02

global(全局变量):x=123deffun1():

globalx x+=1

returnxnonlocal(局部变量):deffun2(): x=123

deffun3():

nonlocalx x+=1

returnx

returnfun3()global和nonlocal全局变量局部变量globalnonlocal函数作用域函数内部globalnonlocal在函数嵌套函数的情况下,同样也有函数作用域的问题,但是python3中提供了方便,只需要使用nonlocal就可以在里层函数内部修改外部函数变量函数内部如果需要改变全局变量,就需要使用global修饰变量函数内部的变量,作用域只在函数内部,函数内部不可以直接更改函数外部的变量函数作用域总结必须掌握:全局变量和局部变量的概念必须掌握:global和nonlocal第三部分闭包教学监督热线思考0102函数里面可以再定义函数,那函数里面定义的函数可以在外面调用吗?如果可以的话,要怎么做呢?闭包0102

内嵌函数:deffun1():

print('fun1()在被调用')

deffun2():

print('fun2()在被调用') fun2()闭包:deffx(x): x+=1

deffy(y):

returnx*y

returnfy闭包闭包是函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包闭包是概念,不是某种函数类型,和递归的概念类似,就是种特殊的函数调用闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁闭包总结必须掌握:闭包的形式和定义第四部分递归和回调函数教学监督热线思考01函数里面可以自身调用自身吗?递归0102阶乘:deffactorial(n):

ifn==1:

return1

returnfactorial(n-1)*n递归中可以函数自身调用自身,但是使用时类似于条件循环一样,要有递归的终止条件递归应用使用递归时,常常可以让代码更加简洁递归会占用比较多的内存,当递归次数比较多时,性能就会降低,因此不建议多使用递归回

调0102示例:defchoice(callback,ch):

ifch:

callback()

else:

print('OK')defplay():

print('hahahaha')choice(play,1)回调函数:

自身是一个函数,只是被传入到另一个函数当中,供其调用回调函数不一定会被调用,是否调用由被传入函数的内部逻辑决定递归总结必须掌握:递归和回调函数的定义熟悉递归和回调函数的使用本节知识点回顾必须掌握:匿名函数的定义必须掌握:全局变量和局部变量的概念必须掌握:global和nonlocal必须掌握:闭包、递归、回调

作业练习一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论