还剩4页未读,继续阅读
文本内容:
人工智能与大数据学院人工程序设计教案n20教学标题项目6函数任务2作用域和名称空间授课班级云计算2101课时2场地4403时间2022年4月28日星期四授课教师李力函数外部和内部是处于不同的名称空间,有不同的作用域变量名和数据之间是引用关系,也可以理解为映射,这种映射关系在内L项目/任务价值存中需要用一块专门的区域来存储,这个区域就称为名称空间函数外部的名称空间叫做全局名称空间,函数内的叫做局部名称空间,此外还有内置名称空间不同层次的名称空间相互独立,使标识符的名称本地化,以避免命名冲突或名字污染知识目标
1.了解名称空间的概念
2.了解名称空间的优先级和作用范围
3.了解闭包的概念
4.了解装饰器的概念能力目标
2.学习目标
1.掌握如何使用global关键字
2.掌握如何使用nonlocal关键字
3.掌握如何实现装饰器教学设计思政-素质目标
1.线上线下结合,引导学习方式,培养自主学习能力;
2.培养学生积极探索、勇于创新的科学素养;
3.养成小组沟通协作共同学习,解决问题能力和团队合作精神;
4.能按照实训6s管理要求做好课前的准备,课后的整理工作,培养勤俭、奋斗、创新、奉献的劳动精神;
1.任务描述
3.学习内容
2.知识准备名称空间和优先级
3.任务实施在局部空间中修改全局变量、LEGB法则、闭包、装饰器重庆在线开放课程平台《Pylhon开发技术应用》,多媒体课件,理实一体化实训室,网络教学资源,可视化「具、www.processor!.
4.学习资源com在线流程图绘制「.具实物教材,软件工具包教学重点名称空间和LEGB法则教学难点装饰器的定义和使用当存在很多函数和全局变量时,无法确保每个名字都有足够的意义、简洁且便于区分,程序员必须花很大的精力来单单记住这些“保学情分析留”名,并为新符号寻找新的唯一的名字因此,多数高级语言都使用了名称空间的机制,使得每一个函数内部都有一个独立的名称空间,不同名称空间中的名字允许重复,但程序员必须了解名称空间的规则一一作用域的范围、优先级、能否越界访问等教学方法训练与练习法;情境教学法教学模式采用线上线下混合教学模式介绍名称空间和作用域的规则本次课教学流程教学策略讲解名称空间和作用域的概念讲解如何在小范围的名称空间中修改大范围名称空间中的变量讲解闭包和装饰器的概念讲解装饰器的实现间配教学环节学生、教师活动教学方法、手段及思政设计时分课程导学函数内部的变量,外界是无法访问的,因此要使用参数和返回值进行数据传介绍名称空间的概念,让学生理解多媒体演示3输之所以存在这种现象,正是因为函数内外处于不同的名称空间不同的名称空间之间相互访问的信息调研规则、优先级等讲授、讨论、案例教学课前发布导学单,线上线下结合,引导学习方式转变,培养教学实施过程自主学习能力小组协作、沟通、互助学习,培育团队合作意识,引导学生大胆表达引入项目学习任务和目标讲解名称空间的概念,介绍和演示多媒体演示2任务1名称空间和作用域在局部空间内如何访问和修改全启发式教学讲解名称空间和作用域相关知识点局名称,介绍和演示装饰器的定小组作品展示和讲解工作内容义利使用
1.名称空间和作用域
2.如何在局部空间里修改全局变量
3.LEGB法则
4.闭包的概念
5.装饰器的概念及其实现任务实施任务1名称空间和作用域思考并答题多媒体演示45主体内容闭包的外层函数将内部函数返M,启发式教学步骤1名称空间和作用域这里对内部函数只写函数名,不写圆括号,为什么?思政设计代码简化的美感是Python中一切皆对象,访问对象常见的方式是使用标识符名称去引用它一种简洁之美;过度的简洁会命名空间存放了标识符和对象之间的映射关系降低可读性,在简洁和可读性有多个层次级别的名称空间之间要懂得权衡、取舍,不要内置Built-in包含了Python语言定义好的名称走极端,中庸之道全局Global包含了单个Python程序中定义的顶层名称课内案例习题是有道理的局部Local包含了单个函数中定义的名称学生聆听老师讲解,观看老师编闭包Enclosing FunctionLocals码实现,师生共同总结流程要点,对于嵌套的两层函数,相对于内部函数,外部函数中定义的名称梳理脉络,形成自然语言或伪代对于Python语言,内置的名称都是固定的码描述的文档,学生根据此文档重新编码,实现程序每个Python程序实例都有各自的全局名称空间每个函数都有自己的局部名称空间在访问名称的时候每个层次的名称空间都不允许从外向内访问但可以由内向外访问,优先级为LEGB,正是范围从小到大的顺序—,aa-a—,M1«U1J.AUeA步骤2在局部作用域里修改全局变量Python中的数据可以分为可变对象和不可变对象对于不可变对象,只有重新赋值才能修改它在函数内部对全局变量重新赋值,会因为局部名称空间的优先级更高,进而造成在局部名称空间里产生一个同名的局部变量赋值即是创建新变量name=hydrogen,»def foo:#这是一个局部变量,只是也叫...name=helium name…printname»foohelium#全局变量并未改变»print namehydrogen要避免这种现象,需要使用global关键字将此名称声明为“来自外部的名称”name=hydrogen»def foo:#到全局空间里去查找名为的变量,并允许操作它...global namename…name=helium*…printname»foo helium#全局变量已被函数所修改»print namefoohelium对于闭包的情况如果内部函数要查看外层函数中的局部变量,可以直接访问如果内部函数要修改外层函数中的局部变量,需使用nonlocal关键字步骤3闭包和装饰器闭包是一种能够访问其他函数内部变量的特殊函数Python中的闭包是在嵌套定义的两层函数中,内部函数作为外部函数的返回值当调用外部函数,并赋值给一个变量时,该变量就引用了这个内部函数对象而再次为这个函数对象传递参数的时候,又获得了内部函数的返回值#在函数内部又定义了一个函数»def outer_funcargl:#显然,是外部函数的参数…def inner_funcarg2:argl…return argl*arg2#将内部函数返回出去,这里不带括号…return inner func#此时的值为并且是内部函数对象,调用即是调用内部函数»a=outer_func3argl3,a a»print afunctioninnerfuncat0x0000000002BlE198()#调用内部函数,的值为»a2arg226装饰器是在闭包的基础上发展而来的装饰器是一个特殊的函数,用于为其它函数增加特定的功能程序在开发期间会面临需求更改、需求增加的情况因此代码总会被修改对于一个函数而言,如果偶尔更改其功能,尚可以接受但若频繁修改,就会有很大的额外的人力成本装饰器可以一定程度上解决这样的问题装饰器有很多经典的应用场景,如插入日志、性能测试、事务处理、权限校验等对于已经写好的程序,可以抽离出一些雷同的代码组建多个特定功能的装饰器装饰器的工作方式如下1)定义一个外部函数(装饰器),接收一个函数对象(被装饰的函数)作为参数;2)定义一个内部函数(闭包),在内部函数中执行一些工作,并运行作为参数传进来的函数由于执行了额外的工作,原先的函数的功能得到了增强;3)外部函数将内部函数作为返回值当装饰器接受一个函数作为参数,并运行,然后将内部函数作为返回值返回由于内部函数中运行了被装饰的函数,同时运行了添加的代码,原函数被加强了最后在调用装饰器的时候对被装饰的函数名称进行赋值,用于覆盖原函数的入口语法糖@装饰器名称(写在被装饰的函数的前一行,用于覆盖原函数的入口)装饰器的最大好处是“两不改”•不对原本的函数作任何修改•不对调用该函数的代码做任何修改练习账户登陆功能(阶段3利用装饰器的原理.,加入字符验证码功能)验证码由random模块生成,可以使用choices函数从字符串中随机选择字符深化小组讨论多媒体演示讨论教学13启发性探讨如果一个全局变量是可变类型,如何在函数内部对它进行修改?分几种情况来说(整体重新赋值、对元素重新赋值、使用成员方法进行修改数据)总结小组总结引导同学总结抢答互动教学
51.作用域和名称空间的概念
2.闭包的概念
3.装饰器的创建和应用任务多媒体
201.编写一个装饰器,为用户登录系统添加验证码功能小组评价和个人综合评价(课堂讨论的参与、是否认真笔记)2学业评价补充教学反思教学反思主要问题解决办法本次课的做得好的地方。