版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深入浅出Python编程
(模块4函数与代码复用)第8单元批量创建文件夹GUI工具
从Excel的排考文件中提取数据父文件夹名称为:场次[日期]考试科目名称,形如「第2场[2021-12-01]Python运维开发
」文件夹名称为:[考场号]班级,形如「[4-101]云计算2001班
」Outcome单元目标/Objectives理解函数式编程及高阶函数
理解变量作用域及嵌套函数
能编写闭包函数及生成器、装饰器函数
能够利用GUI库编写Window程序
掌握Python的模块和包⑥具有精益求精的工匠精神内容及计划/Agenda&Schedule6ClassHoursDetails<00:10>回顾&成果介绍<00:30>模块、包,以及项目目录规划<01:00>高阶函数拼接父子目录路径<01:00>生成器迭代器进行流水号计数<01:00>闭包及装饰器实现进度条<00:35>打包应用程序<00:05>课堂小结Total:6hours(4hPractice)Total:54Hours(24hPractice)01文件夹创建工具GUITools1.任务分析目标解构WindowsGUI界面的实现从Excel中提取数据、分析数据和拼接数据创建父、子文件夹模式识别GUI:第三方模块,消息事件驱动机制来编程Excel数据读取:第三方模块创建目录:OS模块编程接口来创建文件夹1.任务分析模式归纳考虑将不同的功能模块进行拆分,也就是需要对多代码文件进行组织对于排考场次的计数、创建进度条等可以运用高阶函数,采用函数式编程的方法实现算法设计采用PySimpleGUI库来构建GUI界面;xlrd模块读取Excel文件数据创建一个utils的包存放主模块以外的代码map()高阶函数将排考数据做拼接映射;生成器、闭包函数做场次流水号计数;装饰器提供进度条2.任务准备xlrd模块读取Excel文件的库,可以实现指定表单、指定单元格的读取高版本Excel文件的读取需要安装指定的版本/pipinstallxlrd==1.2.0pyinstaller模块分析代码并发现Python代码执行所依赖的所有其他模块PySimpleGUI使用初学者理解的Python数据类型(列表和字典),简化了窗口定义,能将tkinter、Qt、WxPython和Remi(基于浏览器)等GUI框架转化为更简单的界面2.任务准备开发一个WindowsGUI程序只需要简单的5步创建一个WindowsGUI程序02规划并组织项目文件结构FileOrganization1.模块的导入与搜索—
文件与路径os模块:提供了使用操作系统的接口os.path.join():智能拼接一个或多个路径os.path.dirname():获取绝对路径中的目录名sys模块:用来处理Python运行时(runningtime)配置以及资源,从而可以与当前程序之外的系统环境/Python解释器(interpreter)进行交互sys.path属性是一个由字符串组成的列表,用于指定模块的搜索路径1.模块的导入与搜索—
导入模块模块:Python把各种定义存入一个.py的Python源代码文件中,这个文件就是模块(module)模块的导入方式import<module_name>:直接把模块里的对象导入到另一个模块里,就像在本地使用一样。from<module_name>import*:导入模块内定义的所有对象/除了以下划线“_”开头的所谓私有对象。一般情况下,不建议从模块或包内导入*,因为可能会覆盖已经定义的同名对象。from<module_name>import<sub_module>as<alias>:模块名后使用as时,直接把as后的名称与导入模块绑定,也就是为导入的模块起了一个别名,以简化代码的编写。1.模块的导入与搜索—
认识__name__#settings.py__name__=='__main__'通过“__name__”的值是否为“__main__”来判断是本模块代码文件被执行,还是被作为模块导入到别的程序中执行。2.创建模块和项目文件目录包(package)__init__模块(module)变量语句函数(function)变量/数据结构(variable)语句/算法(statements)程序=数据结构+算法再谈模块和包的导入Python中使用包(package)来对模块进行进一步的封装种用“点式模块名”构造,例如:模块名A.B表示包A中名为B的子模块Python只把含有__init__.py文件的目录当成包,哪怕是一个空文件2.创建模块和项目文件目录GUI工具的项目结构output:目录,批量创建的文件夹将存放到该目录下data:目录,存放了排考数据Excel文件utils:包,包含了一个__init__.py包初始化文件,以及多个功能模块.py文件__init__.py:空文件,初始化包setting.py:定义工作主目录、指定文件路径、定义GUI菜单项等全局变量gui_kit.py:创建GUI主窗口的代码generator.py:生成器,生成器函数实现文件的计数enclosing.py:闭包,闭包函数实现文件的计数decorator.py:装饰器,在批量创建文件夹时增加进度条效果2.创建模块和项目文件目录创建GUI界面:gui_kit.py模块创建Windows界面元素,主要包括:菜单栏&菜单文本标签文本框按钮下拉框3.创建文件目录操作函数make_directory.pysheet_names()函数:从Excel文件中获取所有的工作表Sheets的名称,返回一个名称列表;exam_schedules()函数:从指定的Sheet数据表中提取指定列的数据,拼接成父、子两级目录;create_folder()函数:在指定的目录下批量创建文件夹。3.创建文件目录操作函数make_directory.pysheet_names()函数:从Excel文件中获取所有的工作表Sheets的名称,返回一个名称列表;exam_schedules()函数:从指定的Sheet数据表中提取指定列的数据,拼接成父、子两级目录;create_folder()函数:在指定的目录下批量创建文件夹。3.创建文件目录操作函数make_directory.pysheet_names()函数:从Excel文件中获取所有的工作表Sheets的名称,返回一个名称列表;exam_schedules()函数:从指定的Sheet数据表中提取指定列的数据,拼接成父、子两级目录;create_folder()函数:在指定的目录下批量创建文件夹。读取Excel排考文件数据03使用高阶函数拼接父子目录路径Higher-orderfunction1.了解高阶函数—
小函数lambda函数式编程(FunctionalProgramming)就是一种抽象程度很高的编程范式,它的一个特点就是,允许把函数本身作为参数传给另一个函数,还允许返回一个函数赋值给变量。lambda函数又称之为lambda表达式、单表达式函数、匿名函数,她以声明性方式创建函数定义。lambda函数可以包含任意多的参数,但是函数体部分只能包含一个表达式。1.了解高阶函数—
函数作为变量值Python中的函数是第一等公民(first-classvalue)也就是说,一旦函数被定义就会被自动创建成一个对象/分配内存,她可以像我们使用的一个普通变量一样来使用函数1.了解高阶函数—
函数作为参数把一个函数作为参数传递给另一个函数实际上,lambda函数就是作为参数传递给sorted()函数的1.了解高阶函数—
函数作为返回值函数的返回值也可以是一个函数,可以用于惰性求值。2.三大内置高阶函数—
mapmap()函数根据提供的函数对指定序列做映射,它接收一个函数和一个可迭代对象,将函数作用于可迭代对象的每一个元素语法:2.三大内置高阶函数—
mapmap()函数拼接map()映射函数将排考数据列表的每一个字典数据项传递给lambda函数,lambda函数再将字典中“场次”和“考室”两个key的value用反斜线拼接作为一个数据项。2.三大内置高阶函数—
reducereduce()函数拼接将两个参数的函数累积应用于序列的项,从左到右,以便将序列减少到单个值。语法:2.三大内置高阶函数—
filterfilter()函数拼接根据条件过滤序列,该函数接收两个参数,第一个参数是一个函数,第二个参数为序列,序列的每个元素作为参数传递给函数进行判,最后将符合条件/返回True的元素放到新列表中。语法:3个内置高阶函数的使用map()拼接排考信息04使用生成器迭代器进行流水号计数iteration1.了解迭代与迭代器迭代和迭代器迭代(iteration)是重复一个过程,以生成结果序列(可能是无限的)迭代器(iterators)是使程序员能够遍历容器(尤其是列表)的对象,各种类型的迭代器通常通过容器的接口提供可迭代对象vs.迭代器__iter__()方法/可迭代接口的对象__next__()方法1.了解迭代与迭代器iter()&next()字符串变量是一个可迭代对象,通过iter()函数进行转换后创建了一个迭代器它通过next()函数向前、逐一访问容器中的元素。可迭代对象与迭代器的性能是一样的,即它们都是惰性求值(lazyevaluation),指将一个表达式的值计算向后拖延直到这个表达式真正被使用的时候。1.了解迭代与迭代器兔子繁殖问题迭代其实就是一种递推、逼近。斐波那契数列(FibonacciSequence),又称黄金分割数列:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>=2)1.了解迭代与迭代器兔子繁殖问题迭代其实就是一种递推、逼近。斐波那契数列(FibonacciSequence),又称黄金分割数列:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>=2)2.使用yield生成器生成流水号生成器(generators)通常是指生成器函数,是一个用于创建迭代器的工具,返回一个generatoriterator的函数当它们要返回数据时会使用yield语句,而不是returnyield改变函数的执行流程,得到一个生成器,每次对生成器上调用next()时,它会从上次离开的位置恢复执行(它会记住上次执行语句时的所有数据值)2.使用yield生成器生成流水号生成器创建流水号:utils/generator.py3.生成器表达式某些简单的生成器可以写成更简洁的表达式代码,所用语法类似列表推导式,但外层为圆括号而非方括号。05使用闭包及装饰器实现进度条closure1.变量作用域和嵌套函数—LEGB原则内置(Built-in)全局(Global)闭包(Enclose)局部(Local)变量的作用域序中代码能够访问到变量的可见范围,也称之为命名空间(namespace),也即变量的可用性、可见性范围LEGB原则L(Local)局部作用域E(Enclosing)闭包函数外的函数中G(Global)全局作用域B(Built-in)内置/Python解释器作用域,也就是所谓的1.变量作用域和嵌套函数—LEGB原则Global修改外部变量函数内部读取函数外部变量时可以直接读取,但修改一个的变量时,须使用global关键字明确声明变量。如果该变量已经在函数外定义,则global修饰后,对该变量的修改会反映到外部变量;如果该变量没有在函数外部定义,而在函数内部使用global做了修饰后,会创建一个全局变量。1.变量作用域和嵌套函数—
嵌套函数函数嵌套定义(nestedfunction)Python允许嵌套定义函数,也就是函数内部还可以再定义其它函数,这称之为函数嵌套定义。如果要在一个嵌套的函数中修改嵌套作用域中的变量,则须使用nonlocal关键字。1.变量作用域和嵌套函数—
递归函数fib(4)fib(3)fib(2)fib(2)fib(1)fib(1)fib(0)fib(1)fib(0)101121013递归函数(recursivefunction)如果函数直接或间接地调用其本身,我们就称之为递归函数。global&nolocal的使用递归函数的使用2.闭包和装饰器创建进度条—
闭包闭包(closure)须同时满足以下3个条件存在函数的嵌套定义,也就是函数体内定义了函数。内部函数引用外部函数的变量/包括外部函数的形参。外部函数将内部函数作为返回值。enclosing.py2.闭包和装饰器创建进度条—
装饰器装饰器(decorator)本质上就是一个函数,与普通函数不同的是,其参数也是函数,返回值还是函数。在不修改函数代码的情况下增加额外功能。2.闭包和装饰器创建进度条—
装饰器语法糖(SyntacticSugar)2.闭包和装饰器创建进度条make_directory.py2.闭包和装饰器创建进度条decorator.py为批量创建文件夹添加进度条06打包应用程序Py
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理教育学第九章:护理教育综合应用
- 心梗急救护理实践技巧交流
- 苯酐装置操作工岗前技术理论考核试卷含答案
- 铸造模型工岗前安全培训效果考核试卷含答案
- 古建琉璃工风险识别知识考核试卷含答案
- 二次雷达机务员保密意识知识考核试卷含答案
- 烧结成品工班组建设知识考核试卷含答案
- 集成电路管壳制造工冲突管理强化考核试卷含答案
- 护理管理新思路与新方法分享
- 铸管喷漆工安全知识评优考核试卷含答案
- 2026江苏苏州市健康养老产业发展集团有限公司下属子公司招聘15人(第二批)笔试参考试题及答案解析
- 2026贵州黔西南技师学院公开招聘事业单位工作人员14人考试备考试题及答案解析
- 历史(四川卷)(考试版)-2026年高考考前预测卷
- 2026年佳木斯富锦市市政设施管护中心公开招聘一线工程技术人员3人笔试备考试题及答案解析
- 2026年江苏泰州市初二学业水平地生会考试卷题库及答案
- 瑞幸咖啡2025品牌年终报告
- 初中化学九年级下册“化学与社会·跨学科实践”单元整体建构教案
- 中等职业学校班主任能力比赛汽车运用与维修专业班级建设方案
- 储罐安全附件基础知识讲座课件
- 分子设计育种课件
- (完整版)机械工程专业英语课件
评论
0/150
提交评论