版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python概述第1章_Python概述第2章Python语言基础第3章_Python程序流程控制第4章_序列数据类型第5章_Python函数第6章_面向对象程序设计第7章_文件操作第8章_模块、包与库第9章_数据分析基础第10章_电商用户消费数据分析全套可编辑PPT课件
目录CONTENTS01.Python前世今生02.官方Python下载安装03.pip包管理深度实战04.IDLE官方编辑器上手05.Anaconda科学计算全家桶06.JupyterNotebook交互式编程01Python前世今生Guido圣诞夜灵感点燃Python火种Guido的灵感来源1989年圣诞节,GuidovanRossum在阿姆斯特丹为了打发无聊时间,萌生了开发一种新脚本语言的想法。他希望这种语言既能像C语言那样全面调用计算机功能,又能像UnixShell那样轻松编程。Python命名由来Python的名字来源于Guido喜爱的英国电视喜剧《蒙提·派森的飞行马戏团》。而Python的图标则是两条蟒蛇,这是因为出版第一本Python书籍时,出版商O'Reilly习惯使用动物作为书籍封面。Python的版本演进1991年,第一个Python语言编译器(0.9.0版本)问世,当时已经包含了类、模块、函数、处理异常等基本功能。此后,Python不断发展,到2024年,Python官网已经发布到3.12.2版本。Python的核心特点Python以其“优雅、简洁、强大”的语言特点而闻名。它简单易学,代码可读性强,拥有庞大的标准库和第三方库,支持面向对象编程,可扩展性强,且是开源免费的。十大优势与两大短板全景对照1Python的十大优势Python语法优雅简洁,易于学习和使用。它强制缩进,使代码更规范、清晰、可读性强。Python拥有庞大的标准库和第三方库,功能全面且强大。它是开源免费的,解释型语言,支持面向对象编程,具有很强的可扩展性、可嵌入性,可移植性好,跨平台性强,是高级动态编程语言,应用领域广泛。2Python的两大短板与C/C++/Java相比,Python代码运行速度稍慢。此外,Python的版本不能向后兼容,这可能会给开发者带来一些困扰。十大应用版图与明星案例云计算领域在云计算领域,OpenStack云计算管理平台就是利用Python开发的。Python的强大功能使其能够高效地管理虚拟化资源,为云计算提供了强大的支持。Web开发领域在Web开发领域,国内外众多知名网站都采用了Python进行开发。例如,国内的豆瓣网和国外的YouTube视频网站等,都借助Python实现了丰富的网站功能和良好的用户体验。人工智能领域在人工智能领域,Python更是大放异彩。目前最火的ChatGPT机器人聊天程序就是用Python语言开发的。Python在人工智能领域的广泛应用,得益于其强大的库支持和简洁的语法,使得开发者能够更高效地进行模型开发和算法实现。02官方Python下载安装官网锁定3.9.7安装介质01访问Python官网打开Python官方网站/,点击“Downloads”进入下载页面。在该页面,可以看到Python各种版本的信息。02选择合适版本根据计算机操作系统的类型和版本,选择对应的Python安装包。例如,对于Windows64位操作系统,应选择“WindowsInstaller(64bit)”进行下载。03版本选择考量在选择Python版本时,需要考虑长期支持和库兼容性。避免选择过于新的版本,以免因版本不兼容导致后续扩展库安装出现问题。勾选PATH与路径规范01安装包运行鼠标右键单击Python安装包,选择“以管理员身份运行”。或者,鼠标左键双击Python安装包即可开始安装。02勾选PATH选项在安装界面,勾选“AddPython3.9toPATH”选项。这样可以在任何目录下使用python.exe。03路径规范安装路径尽量不要有中文和空格,以免后续使用时出现路径错误。04PATH的作用在cmd命令提示符中输入“python”后,系统会先在当前目录下查找python.exe,若找不到则在Python内置模块中寻找,再找不到则在Path环境变量配置的路径中查找。cmd验证与三类故障排查安装验证安装完成后,同时按下“Win+R”,输入“cmd”并点击“确定”,在打开的cmd命令提示符窗口中输入“python”或“python.exe”,若看到Python安装包信息,则表示安装成功。03pip包管理深度实战pip四大命令与镜像加速01pip四大命令pip是Python的包管理工具,常用的命令有install(安装包)、show(查看安装包信息)、uninstall(卸载安装包)和list(查看已安装包列表)。02镜像加速在使用pip时,可以通过-i参数切换到清华镜像,解决校园网下载超时的问题。使用清华镜像可以显著提高下载速度,提升安装效率。PyInstaller全流程闭环演示1安装PyInstaller在cmd命令提示符窗口中,运行“pipinstallpyinstaller”命令来安装pyinstaller包。安装完成后,可以通过“pipshowpyinstaller”命令查看安装路径等信息。2使用PyInstaller使用PyInstaller可以将Python脚本打包成exe文件,方便在没有安装Python的计算机上运行。通过指定不同的参数,可以实现单文件打包或目录打包。3卸载PyInstaller如果不再需要PyInstaller,可以通过运行“pipuninstallpyinstaller”命令进行卸载。在卸载过程中,根据提示输入“y”即可完成卸载。04IDLE官方编辑器上手Shell与编辑器双模式区分交互式ShellIDLE的交互式Shell用于即时验证语法、快速计算和调试小段逻辑。在Shell中输入代码后,可以立即看到运行结果,非常适合进行简单的代码测试和学习。文件编辑器IDLE的文件编辑器用于编写和保存多行Python脚本。通过编辑器可以创建*.py文件,实现代码的复用和长期保存。163新建保存运行完整闭环1新建文件在IDLE中,选择菜单栏中的“File”->“NewFile”(或按快捷键Ctrl+N),即可打开一个空白的文件编辑器窗口。2保存文件编写完Python代码后,点击菜单栏的“File”->“Save”(或用快捷键Ctrl+S),编辑文件名并保存。保存时默认是PythonFile类型。3运行程序保存文件后,点击菜单栏的“Run”->“RunModule”(或用快捷键F5)来运行程序。运行结果会在IDLEShell窗口中显示。快捷键与调试器初探常用快捷键在IDLE中,Ctrl+N用于新建文件,Ctrl+S用于保存文件,F5用于运行模块,Alt+3/4用于注释与取消注释,Ctrl+Z用于撤销操作。调试器使用通过设置断点和使用DebugControl窗口,可以在IDLE中进行单步执行和调试。在调试过程中,可以观察变量值的变化,帮助快速定位和解决问题。05Anaconda科学计算全家桶Anaconda定位与四大组件Anaconda定位Anaconda是一个基于Python的科学计算和数据分析的集成开发环境,被称为Python的科学计算全家桶。它为数据科学和机器学习提供了强大的支持。四大组件Anaconda包含conda、Navigator、Jupyter和Spyder四大组件。conda用于包管理和环境管理;Navigator是图形化界面的虚拟环境和包管理器;JupyterNotebook是一个开源的交互式笔记本;Spyder是一个跨平台的科学计算环境。Navigator图形化环境管理1启动Navigator在开始菜单中找到“AnacondaNavigator”或在搜索框中搜索,然后左键单击打开。2创建虚拟环境在Navigator中,点击“Create”按钮,为新环境命名并指定Python版本,然后点击“Create”完成创建。3环境管理操作在Navigator中,可以激活、克隆和删除虚拟环境。通过这些操作,可以方便地管理不同的开发环境,避免版本冲突。conda命令行速查与对比condacreate使用condacreate命令可以创建新的虚拟环境。例如,condacreate-nenv_name创建一个名为env_name的虚拟环境。condaactivate使用condaactivate命令激活虚拟环境。例如,condaactivateenv_name可以激活名为env_name的虚拟环境。condadeactivate使用condadeactivate命令退出当前激活的虚拟环境。condaenvlist使用condaenvlist命令可以查看所有虚拟环境的列表。06JupyterNotebook交互式编程Notebook界面与四种单元格1界面组成JupyterNotebook的界面包括菜单栏、工具栏、内核等部分。菜单栏提供了文件操作、编辑、视图等功能;工具栏则包含了保存、插入单元格、运行等常用操作按钮。2四种单元格JupyterNotebook中有Code、Markdown、Raw和Heading四种单元格类型。Code单元格用于编写和执行代码;Markdown单元格用于书写文本、公式和图像等内容;Raw单元格中的内容不会被执行或渲染;Heading单元格用于标识章节和子章节。感谢您的观看THANK
YOU
FOR
READING!第2章
Python语言基础CATALOGUE目录01程序的书写规范02标识符、关键字与变量03基本数据类型04数据类型判断与类型间转换05运算符与表达式01程序的书写规范Python的语句简单语句涵盖表达式求值、变量赋值、pass占位、del删除、return返回、break跳出、continue续行、import导入及global声明等。复合语句包括if条件判断、while循环、for迭代、try异常处理、with上下文管理、函数定义及类定义等复杂控制流与结构。代码与缩进缩进表示代码块Python语言的结构独特,通过缩进来界定代码块,而非传统大括号;相同缩进级别形成逻辑整体,清晰表现结构层次。示例展示缩进用法缩进不仅使代码结构清晰,便于阅读,还强制要求逻辑分组,确保多行代码作为整体被处理,提高代码的一致性与可维护性。缩进确保代码清晰单行注释多行注释通常用于函数、类或模块的开头,以三个单引号“'''”或三个双引号“"""”包围。多行注释注释的注意事项注释应简洁明了,直接指向其描述的代码部分的目的或行为,及时更新,避免显而易见的注释。使用“#”开头,适用于简短注释,快捷键为“ctrl+/”,如“#将5赋值给变量num_a”。Python注释02标识符、关键字与变量组成元素标识符只能由字母(a-z,A-Z)、数字(0-9)和下划线(_)组成,不能以数字开头。区分大小写Python中的标识符是区分大小写的,因此“myVariable”和“MyVariable”被视为两个不同的标识符。保留关键字Python有一系列保留的关键字,这些关键字具有特殊的含义,不能用作普通的标识符。具有描述性推荐使用有意义的命名,以便提高代码的可读性和可维护性;使用“student_count”而非“s_c”来命名。PEP8命名规范遵循PEP8风格指南是一种好的实践;它建议变量和函数名用小写字母和下划线,类名用驼峰命名法。标识符0102030405关键字布尔值函数与类定义循环与流程控制False、True表示布尔值,None用于表示空值,and、or、not用于逻辑运算,if、elif、else用于条件判断。for、while用于循环控制,break、continue用于循环流程控制,try、except、finally、raise用于异常处理。def、return用于定义和返回函数,class用于定义类,import、from用于导入模块或模块中的特定部分。作用域与匿名函数异步与生成器as用于别名导入或在异常处理中指定错误处理的名称,assert用于判断表达式是否为真,否则引发AssertionError。async、await用于异步编程,yield用于定义生成器函数,with用于上下文管理器,比如自动管理文件打开和关闭。删除与占位符del用于删除变量或序列的项,global、nonlocal用于指定变量的作用域,lambda用于创建匿名函数,pass用于占位符。变量在Python中,变量是用来存储数据的占位符;Python是动态编程语言,这意味着在声明变量时不需要指定其数据类型。01变量的命名满足标识符的基本命名规则即可;本书主要采用下划线分割法,使用小写字母和下划线形式。02单个变量赋值在Python中,每个变量在使用前必须赋值,变量赋值后才会被创建;单个变量赋值num_a=2。03num_x,num_y=1,2,将1赋值给变量num_x,2赋值给变量num_y;num_b=num_c=5,将5同时赋值给变量num_b、变量num_c。04输入函数使用input()函数输入数据,然后赋值给一个变量;打印输出函数使用print()函数输出信息。05变量的命名规则输入与打印输出函数多个变量赋值变量的定义03基本数据类型整型整型就是没有小数部分的数字,分为正整数、负整数和零;例如,positive_int=20negative_int=-5zero_int=0。浮点型浮点型就是有小数部分的数字,例如3.14、0.23、-5.9等都是浮点型数据;Python中的浮点数遵循IEEE754双精度浮点数标准。布尔型布尔型是Python中的一个基本数据类型,用于表示逻辑上的真(True)和假(False);布尔型变量主要用于条件判断和逻辑运算。复数型复数由实部和虚部组成,使用j作为虚部单位;复数的表达式为“real+imagj”,其中“real”表示实部,“imag”表示虚部。数值型字符型01字符串的基本操作创建字符串、字符串的连接和复制、字符串的索引和切片,Python中字符串是不可变的序列类型,元素不能更改。02字符串的常用方法Python的字符串对象有许多内置方法,用于执行常见的文本处理任务,如统计、查找和替换、去除空白字符等。04数据类型判断与类型间转换“type()”函数返回变量的类型对象,这对于确定变量的数据类型的很有用。使用“type()”函数“isinstance()”函数用于检查一个对象是否是一个已知的类型,更灵活。使用“isinstance()”函数数据类型判断整型(int)转换布尔型(bool)转换字符串(str)转换注意事项复数(complex)转换浮点型(float)转换字符串转整型用“int()”;浮点转整型会舍去小数;布尔值转整型,True为1,False为0。整型转浮点用“float()”;字符串转浮点需合法;布尔值转浮点,True为1.0,False为0.0。虽然没有直接的内置函数从其他类型转换为复数,但可以显示构造复数,如“complex(real[imag])”。Python中,布尔型只有两个值,Python会自动根据上下文将其他数据类型转换为布尔值。整型、布尔型、容器类型均可使用“str()”转换;eval()执行字符串表达式,返回结果保持数据类型。避免数据丢失或错误的类型转换导致的程序异常;确保转换是逻辑上合理的,自动或显示在不同类型间转换数据时。基本数据类型间转换05运算符与表达式运算符概述运算符的定义在Python中,运算符是用于执行特定操作的符号或关键字,它们帮助我们对变量和值执行数学、比较、逻辑等操作。01运算符的重要性了解并熟练运用这些运算符是编写有效Python代码的关键,掌握运算符能够更高效地编写代码,解决各种问题。02常见运算符逻辑运算符用于对真和假两种布尔值进行运算,结果仍为布尔值。包括逻辑与(and)、逻辑或(or)、逻辑非(not)等。关系运算符用于对变量或表达式的结果进行大小比较,如等于(==)、不等于(!=)、小于(<)等,返回True或False。算术运算符用于执行基本的数学运算,包括加法(+)、减法(-)、乘法(*)等,通过它们,我们可以轻松地执行各种数值计算。常见运算符赋值运算符用于给变量赋值或进行复合赋值操作,如赋值(=)表示将右边的值赋给左边的变量,加赋值(+=)表示将右边的值与左边的变量相加后赋值。身份运算符用于判断两个标识符是否引用同一个对象,如is表示两个标识符引用同一个对象,isnot表示两个标识符不引用同一个对象。成员运算符用于判断元素是否包含在指定的序列中,如in表示元素包含在序列中,notin表示元素不包含。运算符的优先级在Python中,运算符的优先级决定了表达式中运算符的计算顺序。当一个表达式包含多个运算符时,优先级较高的运算符会先于优先级较低的运算符执行。运算符的优先级如果优先级相同,则按照从左到右的顺序执行,这称为结合性。对于大多数Python运算符而言,这是默认的结合性规则。优先级与结合性使用括号可以改变运算符的默认优先级,让程序员明确指定计算顺序。正确理解和运用运算符的优先级对于编写准确无误的代码非常重要。括号改变优先级表达式组成与书写规则赋值与算术表达式在Python中,表达式是用于计算值或表达某种条件的代码片段。表达式可以是简单的赋值、算术运算、函数调用等。Python中表达式非常灵活,包括各种比较表达式(如等于、不等于、小于等)和逻辑表达式(如逻辑与、逻辑或、逻辑非)。Python支持成员表达式,用于检查一个值是否存在于某个集合中;同时,还有身份表达式,用于比较两个变量是否引用同一个对象。比较与逻辑表达式成员与身份表达式表达式组成与书写规则访问与函数调用在Python中,可以通过属性访问和索引访问来获取对象属性或列表中指定位置的元素;同时,可以使用函数调用表达式来调用函数并获取结果。Python支持列表推导式,用于生成新的列表;同时,还支持三元条件表达式,这是一种简洁的if-else表达方式,使代码更简洁、易读。Python鼓励编写简洁明了的表达式,使用直接且易于理解的方式表达逻辑,避免不必要的复杂性,以提高代码的可读性和维护性。列表推导与三元条件简洁性与清晰性表达式组成与书写规则运算符优先级在编写Python表达式时,应遵循运算符优先级规则。若需改变默认优先级顺序,可使用括号明确指定,以确保表达式计算结果符合预期。避免复杂的嵌套编写Python表达式时,应尽量减少嵌套层次,尤其是逻辑表达式。复杂嵌套不仅降低代码可读性,还增加出错风险。必要时可分解为多个简单表达式。lambda表达式虽然lambda表达式可以用于快速定义小型匿名函数,但过度使用会降低代码可读性。对于复杂逻辑,最好定义明确的函数。表达式组成与书写规则列表推导、生成器表达Python中创建新列表或迭代器的高效方式有列表推导和生成器表达式,但应确保它们的复杂度适中,避免难以理解。PEP8编码规范遵循PEP8编码规范有助于保持代码的一致性和可读性;该规范涵盖了命名、缩进、空白、行长度等方面的规定。代码注释适当使用注释来解释复杂的表达式或逻辑,特别直观上不易理解的部分;清晰的代码往往比注释更重要。THANKS感谢观看Python程序流程控制主讲人:XXX012020304
205目录CONTENTS流程控制基础与单双分支多分支与嵌套选择结构for循环与迭代机制while循环与条件控制循环嵌套与综合案例01流程控制基础与单双分支PART
01Python流程控制三种结构概览顺序结构顺序结构是Python中最基本的执行流程,遵循自上而下的原则,从第一条语句依次执行到最后一条语句,简单易懂。选择结构选择结构根据条件表达式的真假来决定程序的执行路径,包括单分支、双分支和多分支结构,能够实现复杂的逻辑判断。循环结构循环结构用于在满足条件时反复执行某项任务,能够快速完成重复性计算,是提高程序效率的重要工具。单分支if语法与条件表达式规则单分支if语法单分支if语句只包含一个条件表达式和一个语句块,当条件为True时执行语句块,否则跳过。语法格式为:if条件表达式:语句块。条件表达式规则条件表达式遵循‘非零即真,非空即真’的原则,例如数字0、空容器、None等价于False,其余值等价于True。双分支if-else与简洁写法辨析双分支if-else双分支结构包含if和else两个语句块,条件为True时执行if块,为False时执行else块,确保两种结果必有其一。简洁写法辨析双分支结构可以简化为单行表达式:语句1if条件表达式else语句2,但为保证可读性,建议初学者保持缩进格式。02多分支与嵌套选择结构PART
02多分支if-elif-else链式判断多分支结构多分支结构通过elif追加多个条件,自上而下依次判断,仅执行第一个为True的语句块,若全部为False则执行else块。链式判断多分支结构的条件判断是短路求值,一旦某个条件为True,后续条件将不再判断,确保程序效率。成绩等级示例成绩等级示例展示了多分支结构在区间判断中的应用,从高到低依次比较,避免高分被提前截获。分支嵌套与逻辑分层设计分支嵌套分支嵌套通过在if语句块内再写if,形成层级结构,适用于主从关系的判断,使程序逻辑清晰,避免复杂的逻辑运算符组合。03for循环与迭代机制PART
03for循环语法与range对象01for循环语法for循环通过‘for变量in可迭代对象’的形式依次提取元素,循环次数由可迭代对象的长度决定,适用于遍历容器类对象。02range对象range函数生成等差整数序列,支持起始、终止、步长三参数,返回迭代器,节省内存。for-else搭配与遍历中断逻辑
01for-else搭配for循环后可附加else块,当循环自然结束且未被break中断时执行else块,适用于遍历成功后的后续处理。02遍历中断逻辑理解for-else的执行逻辑,避免将其误当独立条件分支,可在搜索类算法中统一输出‘未找到’提示。04while循环与条件控制PART
04while条件循环与终止设计while条件循环while循环依赖条件表达式的真假决定是否继续执行,每轮循环需主动修改相关变量以避免死循环。终止设计while循环的终止设计需明确变量的初始值、推进语句与边界判断,确保循环在适当条件下结束。break与continue的层级控制01break语句break语句用于立即结束当前层整个循环,并跳至后续语句,适用于提前退出循环的场景。02continue语句continue语句用于跳过本轮循环的剩余语句,进入下一轮条件判断,适用于过滤不符合条件的元素。03层级控制break和continue仅影响所在层级的循环,嵌套场景下不会跨层干预,确保程序逻辑清晰。05循环嵌套与综合案例PART
05循环嵌套结构与乘法表实现循环嵌套结构循环嵌套通过在一个循环体内再写循环形成层级结构,外层每迭代一次,内层完整执行一轮,总次数为各层次数乘积。乘法表实现九九乘法表示例通过双重for循环打印1-9的矩形阵列,通过调整内层起始值与打印格式,可轻松衍生下三角、上三角两种布局。百钱买百鸡与质数筛选案例百钱买百鸡百钱买百鸡问题通过双重for循环枚举公鸡母鸡数量,结合剩余小鸡只数与金额双条件判断,穷举得出四种可行方案。质数筛选打印100以内质数通过双重for循环实现,内层循环用else定位未被break中断的循环,即找到质数。猜数字与打靶游戏设计猜数字游戏猜数字游戏结合random模块、for次数限制与break提前退出,实现‘最多五次机会’的交互体验。打靶游戏打靶游戏使用whileTrue与random模拟随机命中,break在命中靶心后终止,计数器记录总次数。06异常处理与稳健编码PART
06Python常见异常与错误分类异常与错误分类Python中的异常分为语法错误和运行异常,语法错误在解释前被捕获,无法被try拦截;运行异常在运行中触发,可通过异常结构处理。常见运行异常常见的运行异常包括ZeroDivisionError、ValueError、IndexError、FileNotFoundError等,理解其触发场景有助于快速定位问题。try-except-else-finally结构01try-excepttry块用于执行可能抛出异常的代码,except块用于捕获并处理指定异常,确保程序在出现错误时能够继续运行。02else块else块在try块中的代码没有发生异常时执行,常用于处理未捕捉到异常的情形,作为正常执行后的追加处理。03finally块finally块无论try块中的代码是否发生异常都会执行,常用于释放外部资源,如关闭文件、数据库连接等。输入校验与防御式编程示例输入校验通过try捕获输入异常,结合assert进行二次校验,确保输入数据合法后再进入业务逻辑,提升程序的健壮性和用户体验。07总结与进阶指引PART
07流程控制知识体系回顾01知识体系本课程从顺序、选择、循环三条主线展开,系统梳理单双多分支、嵌套、for、while、循环控制、嵌套循环及异常处理八大知识点。02生活化案例通过车站安检、成绩等级、百钱买百鸡、猜数字等生活化案例,将抽象控制结构转化为可迁移的解决问题模板。03学习基础为后续函数、模块、面向对象及算法学习奠定扎实的逻辑与编码基础。最佳实践与性能提示最佳实践选择结构应先写高概率或高优先级条件,循环体内避免修改正在遍历的对象,嵌套不宜超过三层,异常处理精确匹配类型。性能提示养成添加注释与单元测试的习惯,对文件、网络等资源使用try-finally或with确保及时释放,提升代码可维护性。感谢观看THANKS主讲人:XXXPython序列数据类型目录CONTENTS01.列表的创建与删除02.列表常用方法与函数03.元组的创建与不可变性04.字典的创建与访问05.字典增改删与集合运算01列表的创建与删除列表概念与两种创建方式1列表定义列表是Python中一种有序且可变的序列数据类型,允许存储多个元素,元素类型可以不同,使用方括号[]包裹,元素之间用逗号分隔。2直接创建可以直接将元素放入方括号中创建列表,例如:list1=[1,2,3],这种方式简单直观,适用于元素已知的情况。3使用list()函数可以使用list()函数将其他可迭代对象(如元组、字符串、集合等)转换为列表,例如:list2=list((1,2,3)),这种方式灵活,适用于需要转换数据类型的情况。del语句彻底删除列表或元素删除整个列表使用del命令可以删除整个列表,例如:dellist1,删除后列表不再存在,再次访问会引发NameError。删除指定元素del命令也可以删除列表中的指定元素,例如:dellist1[0],会删除索引为0的元素,列表长度随之减少。02列表常用方法与函数追加与扩展:append与extendappend方法append(object)方法将一个对象整体追加到列表末尾,例如:list1.append(4),列表长度增加1,适用于单个元素的追加。extend方法extend(iterable)方法将一个可迭代对象中的所有元素逐个追加到列表末尾,例如:list1.extend([5,6]),列表长度增加多个元素,适用于批量追加。精准插入与删除:insert、remove、popinsert方法insert(index,object)方法在指定索引位置插入一个对象,后续元素自动后移,例如:list1.insert(1,'a'),可在任意位置插入元素。remove方法remove(value)方法删除列表中第一个值为value的元素,例如:list1.remove(2),若元素不存在会抛出异常。pop方法pop(index)方法移除并返回列表中指定位置的元素,若未指定位置,则默认移除并返回最后一个元素,例如:list1.pop(1)。列表排序与逆置:sort、reverse、内置sortedsort方法sort()方法对列表元素进行原地排序,可指定reverse参数控制升序或降序,还可通过key参数自定义排序规则,例如:list1.sort(reverse=True)。reverse方法reverse()方法对列表元素进行原地逆序,无需指定参数,操作简单快捷,例如:list1.reverse()。sorted函数sorted()函数对列表进行排序并返回一个新列表,原列表不变,使用灵活,适用于需要保留原列表顺序的场景。列表统计与查找:count、index、聚合函数1count方法count(value)方法返回列表中值为value的元素出现的次数,例如:list1.count(2),可用于统计元素频率。2index方法index(value)方法返回列表中第一个值为value的元素的索引,若元素不存在会抛出异常,例如:list1.index(3)。3聚合函数len()、max()、min()、sum()等函数可对列表进行长度计算、最大值/最小值查找、求和等操作,适用于数值型列表的统计分析。03元组的创建与不可变性元组概念与单元素陷阱1元组定义元组是Python中一种有序且不可变的序列数据类型,使用小括号()包裹,元素之间用逗号分隔,适用于存储固定不变的数据。2单元素元组创建单元素元组时,元素后必须加逗号,例如:tuple1=(1,),否则会被识别为普通括号表达式。3元组特点元组一旦创建,其元素不可修改、删除或添加,可作为字典的键,而列表不可,体现了数据的不可变性和安全性。tuple转换与列表元组差异归纳01tuple()函数tuple()函数可将其他可迭代对象(如列表、字符串、range等)转换为元组,例如:tuple1=tuple([1,2,3]),转换后元素类型不变。02列表与元组差异列表可变,元组不可变;列表使用方括号[],元组使用小括号();元组可作为字典键,列表不可;元组在某些场景下性能优于列表。04字典的创建与访问键值对概念与三种创建语法字典定义字典是一种无序可变映射数据类型,由键值对组成,键必须是不可变类型且唯一,值可以是任意类型,使用花括号{}包裹。直接赋值创建可以直接使用花括号和键值对创建字典,例如:scores={'math':90,'english':85},适用于已知键值对的情况。使用dict()函数dict()函数可通过多种方式创建字典,如dict([('math',90),('english',85)])或dict(math=90,english=85),灵活多样。五种元素访问途径01使用键访问通过键直接访问对应的值,例如:scores['math'],若键不存在会抛出异常。02get方法get(key)方法访问键对应的值,若键不存在返回None或指定默认值,避免异常,例如:scores.get('science','Nosuchkey')。03其他访问方法items()返回键值对列表,keys()返回键列表,values()返回值列表,适用于遍历字典中的数据。05字典增改删与集合运算新增与修改的三种策略使用键赋值直接使用键赋值,若键存在则修改值,不存在则新增键值对,例如:scores['science']=92,简单直接。setdefault方法setdefault(key,value)方法,若键存在则返回对应值,不存在则新增键值对,例如:scores.setdefault('history',80)。update方法update()方法可将一个字典或键值对更新到当前字典中,若键重复则覆盖原值,适用于批量更新。字典四种删除方式pop方法pop(key)方法删除指定键的值并返回,若键不存在可返回默认值,例如:scores.pop('math','Nosuchkey')。其他删除方法deldict[key]直接删除键值对,popitem()删除并返回最后一对键值,clear()清空字典,适用于不同场景的清理操作。集合特征与创建集合定义集合是一个无序可变序列,元素唯一且不可变,使用花括号{}或set()函数创建,适用于成员测试和去重操作。创建集合使用花括号创建集合时,元素自动去重,例如:set1={1,2,3,3},重复元素被忽略;使用set()函数可将其他可迭代对象转换为集合。集合特点集合元素不可变,但集合本身可变,支持添加、删除等操作,不支持索引访问,体现了数据的无序性和唯一性。集合四大运算:交并差对称差01交集运算使用&运算符或intersection()方法计算两个集合的交集,例如:set1&set2或ersection(set2),返回共同元素组成的集合。02并集运算使用|运算符或union()方法计算两个集合的并集,例如:set1|set2或set1.union(set2),返回所有元素组成的集合。03差集运算使用-运算符或difference()方法计算两个集合的差集,例如:set1-set2或set1.difference(set2),返回set1中独有的元素组成的集合。04对称差集运算使用^运算符或symmetric_difference()方法计算两个集合的对称差集,例如:set1^set2或set1.symmetric_difference(set2),返回两个集合中独有的元素组成的集合。struct模块定长二进制打包struct模块struct模块可用于定长二进制数据的打包和解包,通过格式字符串指定数据类型和长度,例如:struct.pack('i',123)和struct.unpack('i',bytes)。定长记录使用struct模块可创建定长记录,适合与C语言程序或硬件通信,例如:先写入数据长度,再写入数据内容,读取时按相同格式解包。03目录与CSV批量处理os模块创建与列出目录1os.mkdir方法os.mkdir()方法用于创建单层目录,若目录已存在会抛出异常,例如:os.mkdir('new_folder')。2os.makedirs方法os.makedirs()方法可递归创建多层目录,自动创建中间不存在的目录,例如:os.makedirs('parent/child')。3os.listdir方法os.listdir()方法用于列出指定目录下的所有文件和子目录,返回文件名列表,例如:files=os.listdir('.')。csv写入表头与多行数据1csv模块csv模块可用于CSV文件的读写操作,writer对象的writerow()方法写入单行表头,writerows()方法写入多行数据,例如:writer.writerow(['name','age'])。2写入注意事项写入CSV文件时需指定newline=''防止Windows系统产生多余空行,指定encoding='utf-8'确保中文字符正确写入。csv逐行读取与enumerate编号reader对象csv模块的reader对象可逐行读取CSV文件,返回每行数据为列表,例如:forrowinreader(file)。enumerate函数使用enumerate(reader,1)可为每行数据添加行号,方便定位和处理,例如:forrow_num,rowinenumerate(reader,1)。90天营业数据生成综合案例01数据生成使用datetime模块生成日期序列,从基准营业额开始,每天固定增加一定金额并随机浮动,模拟90天营业数据。02写入CSV将生成的日期和营业额数据写入CSV文件,每行一条记录,便于后续分析和可视化。03验证数据读取生成的CSV文件,验证前几条和最后一条数据是否正确,确保数据生成和写入无误。04Excel批量读写与样式openpyxl核心对象与流程openpyxl模块openpyxl模块用于操作Excel文件,支持读取、修改和保存.xlsx格式的文件,广泛应用于数据处理和报表生成。核心对象Workbook对象代表工作簿,Worksheet对象代表工作表,Cell对象代表单元格,通过这些对象可操作Excel文件的各个方面。操作流程使用openpyxl.load_workbook()加载现有工作簿或openpyxl.Workbook()创建新工作簿,通过索引或名称获取工作表,操作单元格后保存工作簿。按行追加数据与公式自动计算01追加数据使用Worksheet对象的append()方法可按行追加数据,将列表形式的数据逐行写入工作表,例如:ws.append([1,'John',85])。02公式计算在单元格中写入公式,Excel会自动计算结果,例如:ws['C2']='=SUM(A2:B2)',实现自动求和等操作。单元格样式与列宽自适应1单元格样式使用openpyxl.styles模块可设置单元格样式,如字体、对齐方式等,例如:cell.font=Font(bold=True)设置字体加粗。2列宽调整通过计算每列的最大字符长度,自动调整列宽,确保内容显示完整,例如:ws.column_dimensions['A'].width=max_length。3样式应用在生成报表时,合理应用样式可提升报表的可读性和专业性,例如:为表头设置加粗居中样式,为数据列设置小数点格式。5综合实战与课程总结文本文件合并与交替写入1合并需求将两个文本文件的多行内容交替写入到一个新的文件中,若一个文件行数较少,则将另一个文件的剩余行追加到新文件末尾。2实现方法使用readline()方法逐行读取两个文件,交替写入新文件,通过布尔标记判断文件结束,实现交替合并。3文件操作使用with语句确保文件正确关闭,通过一次打开多个文件上下文,实现边读边写的流式处理,避免文件句柄泄漏。商品分类增量录入与回显录入需求从键盘输入商品分类的类别编号和名称,若类别编号已存在则提示重复,否则将新分类追加写入文件并更新内存字典。实现方法逐行读取文件内容,使用split(',')拆分为键值对存入字典,判断新编号是否存在,若不存在则追加写入文件并更新字典。回显操作通过seek(0)回卷文件指针,逐行打印当前所有分类信息,实现录入后的即时反馈和数据展示。二进制账号文件随机读写1数据结构设计定长记录格式,先写入姓名长度和姓名的UTF-8字节,再写入性别布尔值、年龄、信用分等信息,最后写入地址字典的JSON长度和字节。2写入操作使用struct模块的pack()方法按格式字符串打包数据,将用户信息写入二进制文件,确保数据顺序和格式正确。3读取操作使用struct模块的unpack()方法按相同格式解包数据,再使用json.loads()恢复地址字典,实现二进制文件的随机读写。学生成绩表完整自动生成数据准备将学生成绩数据存储在列表中,每行一个学生信息,包括学号、姓名、各科成绩等。生成报表使用openpyxl模块创建新的Excel工作簿,按行追加学生数据,写入公式计算总分、平均分,添加等级判定公式。样式美化设置表头样式为加粗居中,数字列保留两位小数,自动调整列宽,确保生成的报表美观且易于阅读。易错点回顾与调试技巧列表嵌套追加列表嵌套追加时,若未正确使用append()方法,可能导致多一层括号,需注意追加的是单个元素还是子列表。元组单元素创建单元素元组时,若忘记在元素后加逗号,Python会将其识别为普通括号表达式,而非元组。字典键不可哈希字典的键必须是不可变类型且唯一,若使用列表等可变类型作为键,会抛出不可哈希异常。文件未关闭使用with语句时,若缩进错误或未正确关闭文件,可能导致文件句柄泄漏,需确保文件在使用完毕后正确关闭。课程知识图谱与思维导图知识体系本课程涵盖列表、元组、字典、集合、文件操作等基础知识,以及综合实战案例,构建完整的Python语言基础体系。列表操作列表的创建、增删改查操作,以及排序、逆置、统计等方法,是数据处理的基础工具。数据结构元组的不可变性、字典的键值对映射、集合的去重与运算,适用于不同场景的数据存储与处理。文件操作文件的打开、关闭、读写操作,以及文本、二进制、CSV、Excel等文件格式的处理,是数据持久化与交换的关键。下阶段延伸:数据分析与框架01数据分析后续课程将引入数据分析概念,使用pandas等框架进行数据清洗、处理与分析,挖掘数据价值。02数据可视化结合matplotlib、seaborn等库,将数据分析结果可视化,通过图表直观展示数据趋势与规律。03项目实践通过真实数据集的分析项目,综合应用所学知识,解决实际问题,提升数据分析与编程能力。课堂练习与答疑指引1练习任务布置随堂练习,包括列表操作、元组使用、字典统计、文件读写等任务,巩固课堂所学知识。2提交要求要求学生提交Python源码、运行截图以及生成的CSV或Excel文件,确保练习过程完整且可验证。3答疑指导教师巡视课堂,针对学生在编码、路径、公式等方面的常见问题进行答疑,确保学生当堂掌握知识。课后作业与拓展阅读必做作业完成教案中的课后作业,包括文本文件合并、生成学生成绩Excel报表等任务,强化知识应用能力。拓展任务鼓励学生完成拓展任务,如集合操作、pickle序列化、openpyxl条件格式等,拓宽知识边界。阅读推荐推荐《利用Python进行数据分析》相关章节及官方文档,引导学生自主学习,为后续课程做好准备。致谢与互动问答感谢参与感谢同学们的专注参与和积极互动,希望本次课程对大家有所帮助。互动问答开放互动问答环节,针对课堂内容、报错信息、拓展方向等问题进行答疑,解答学生疑惑。课后交流鼓励学生在班级群分享学习成果和经验,营造互学互助的学习氛围,共同进步。感谢您的观看THANK
YOU
FOR
READING!第5章_Python函数目录CONTENTS01.为什么需要函数02.函数定义与首次调用03.参数传递的艺术04.嵌套与递归思维05.作用域与变量生命周期目录CONTENTS01.lambda与内置函数速览02.综合案例:名片系统01为什么需要函数代码复用的痛点与函数价值01重复编写代码的低效性在日常开发中,重复编写相同逻辑的代码不仅效率低下,而且容易出错。这种重复劳动不仅浪费时间,还可能导致代码的不一致性,增加维护成本。02函数的封装优势函数将具有独立功能的代码块封装成一个整体,使得代码复用成为可能。通过定义函数,我们可以将复杂的任务分解为多个可复用的模块,从而提高代码的可读性和可维护性。03结构化程序设计函数是实现结构化程序设计的基础。通过将程序分割为不同的功能模块,我们可以实现自顶向下的设计思路,使程序结构更加清晰,便于理解和维护。04团队协作与代码质量提升在团队开发中,函数的使用使得大型项目可以被分割成多个子任务,团队成员可以分工合作,同时进行开发。这不仅提高了开发效率,还提升了代码的整体质量。Python函数四大来源全景Python函数的四大来源Python函数生态丰富多样,主要包括四大来源:内置函数、标准库函数、第三方库函数和用户自定义函数。内置函数如print()和len(),直接可用;标准库函数如random和math,通过import语句导入;第三方库函数如Python图像库和词云库,需额外安装;用户自定义函数则可根据实际需求灵活封装,实现特定功能。02函数定义与首次调用def语句语法与命名要点1def语句的基本语法在Python中,使用def关键字定义函数。其语法格式为:def函数名(形参列表):,函数体代码需要缩进表示。函数名应为有效的Python标识符,通常使用小写字母,并通过下划线增加可读性。2形参列表的灵活性形参列表是函数定义时接收参数的部分,它是可选的。如果没有形参,函数名后面的圆括号也不能省略。如果有多个形参,每个形参之间用逗号隔开。3函数体与pass占位函数体是实现函数功能的代码部分,如果在定义函数时还不确定具体的实现,可以使用pass语句作为占位符,保证函数结构的完整性。返回值机制与None默认01return语句的作用return语句用于返回函数执行后的结果,并退出函数。一个函数可以有多个return语句,但最多只有一条会被执行。如果函数没有return语句或return语句没有返回值,则默认返回None。02返回值的多样性函数的返回值可以是一个值,也可以是多个值。当返回多个值时,Python会将这些值封装成一个元组返回。调用函数时,可以使用变量接收返回的结果,以便后续使用。函数调用流程与顺序要求01函数调用的基本语法函数调用的语法格式为:函数名(实参列表)。调用函数时,实参会按照位置或名称传递给函数的形参。如果函数定义时有必须的参数,则调用时必须一一对应地传递参数。02函数定义与调用的顺序在Python程序中,函数的定义必须位于调用该函数的代码之前。通常,程序的结构顺序为:import语句→函数定义→全局代码。这样可以确保在调用函数时,函数已经被正确定义。03函数调用的全局性函数定义后,可以在程序的任何地方被调用,只要该函数的作用域允许。这使得函数可以被多次复用,提高了代码的效率和可维护性。03参数传递的艺术形参与实参的引用本质变量的引用机制在Python中,变量存储的是对象的内存地址,而不是对象本身。当我们将一个变量传递给函数时,实际上是传递了该变量的引用。这意味着函数内部对参数的修改可能会影响外部的变量。不可变对象与可变对象Python中的数据类型分为不可变对象(如数字、字符串、元组)和可变对象(如列表、字典)。不可变对象在函数内部修改时会创建新的对象,而可变对象则可以在函数内部直接修改。位置参数与数量匹配陷阱1位置参数的传递方式位置参数是最常见的参数传递方式,它按照参数的位置顺序将实参传递给形参。这种方式简单直观,但要求实参的数量和顺序必须与形参完全匹配。2数量不匹配的错误如果调用函数时传递的实参数量与函数定义时的形参数量不匹配,Python会抛出TypeError异常。例如,少传递一个参数或多余一个参数都会导致程序出错。3顺序错误的影响即使实参的数量正确,但如果顺序错误,也可能导致程序运行结果不正确。例如,在计算圆柱体表面积时,如果将半径和高度的顺序颠倒,会导致计算结果完全错误。关键字参数提升可读性关键字参数的定义关键字参数是通过形参名称来传递参数值的方式。这种方式使得函数调用更加灵活,不再依赖于参数的位置顺序。关键字参数的格式为:形参名=实参值。关键字参数的优势使用关键字参数可以提高代码的可读性,使函数调用更加清晰。此外,关键字参数还可以与位置参数混合使用,但关键字参数必须放在位置参数之后。默认值参数与顺序规则默认值参数的定义在定义函数时,可以为形参设置默认值。这样,在调用函数时,如果未传递该参数,则会使用默认值。默认值参数的格式为:形参名=默认值。默认值参数的使用默认值参数使得函数调用更加灵活。调用时可以省略默认值参数,也可以显式地传递一个值来覆盖默认值。例如,print()函数的sep和end参数就是默认值参数的典型应用。顺序规则在定义函数时,所有默认值参数必须放在位置参数之后,否则会引发语法错误。这是因为Python需要明确区分位置参数和默认值参数。可变长度参数*与**1可变长度参数的定义在某些情况下,函数的参数数量是不确定的。Python提供了可变长度参数来解决这个问题。可变长度参数分为两种:*args(元组)和**kwargs(字典)。2可变长度参数的使用使用*args可以接收任意数量的位置参数,并将它们存储在一个元组中。使用**kwargs可以接收任意数量的关键字参数,并将它们存储在一个字典中。这两种参数可以同时使用,但顺序必须是:位置参数、默认值参数、*args、**kwargs。04嵌套与递归思维嵌套定义与闭包雏形函数的嵌套定义在Python中,可以在一个函数内部定义另一个函数,这种定义方式称为函数的嵌套定义。内层函数只能在外层函数的作用域内被调用,这种机制是闭包的基础。闭包的应用闭包可以将外层函数的变量与内层函数的逻辑绑定在一起,使得内层函数可以在外层函数执行完毕后仍然访问外层函数的变量。这种特性在工厂函数和装饰器中得到了广泛应用。嵌套调用分解复杂问题嵌套调用的概念嵌套调用是指在一个函数的内部调用另一个已经定义好的函数。这种调用方式可以将复杂的问题分解为多个子问题,从而实现模块化的程序设计。平方阶乘和案例例如,计算两个数的平方阶乘和时,可以先定义一个函数计算平方值,再定义一个函数计算阶乘值。主函数调用这两个函数,最终实现复杂功能的分解与组合。模块化设计的优势通过嵌套调用,可以将程序划分为多个独立的模块,每个模块负责一个特定的功能。这种设计方式不仅提高了代码的可读性和可维护性,还使得程序的扩展更加容易。递归思想与阶乘案例1递归的基本概念递归是指一个函数在执行过程中直接或间接地调用自身。递归函数通常需要定义一个基线条件和一个递归条件。基线条件用于结束递归,递归条件用于将问题分解为更小的子问题。2阶乘的递归实现计算阶乘是一个典型的递归应用场景。例如,计算n!时,如果n小于等于1,则返回1;否则返回n乘以(n-1)!。这种递归实现方式简洁明了,非常接近数学定义。递归与循环的权衡递归与循环的对比递归和循环是解决重复问题的两种常见方式。递归代码简洁,但可能会消耗较多的栈空间,导致栈溢出;循环代码相对复杂,但效率更高,占用内存较少。性能与可读性的平衡在实际开发中,需要根据问题的规模和复杂度选择合适的实现方式。对于小规模问题,递归和循环都能很好地解决问题;但对于大规模问题,递归可能会引发性能问题。栈溢出的风险当递归深度过大时,可能会触发栈溢出异常。例如,计算n=1000的阶乘时,递归方式可能会导致程序崩溃,而循环方式则可以正常运行。05作用域与变量生命周期全局变量与模块共享1全局变量的定义全局变量是在函数外部定义的变量,它的作用域是整个模块文件,从定义的位置开始,直到文件结束。全局变量通常用于存储配置信息或常量。2全局变量的访问在函数内部,可以通过全局变量的名称直接访问其值。但是,不能直接使用赋值语句修改全局变量的值,否则会被解释为局部变量。3全局变量的导入如果需要在其他模块中访问全局变量,可以通过import语句导入模块,然后使用模块名.变量名的方式访问;也可以通过from...import语句直接导入变量。局部变量与隔离原则局部变量的定义局部变量是在函数内部定义的变量,包括函数的形参。它的作用域仅限于函数体内部,函数执行结束后,局部变量会被系统回收。局部变量的隔离性不同函数可以定义相同名称的局部变量,但它们之间互不干扰。这种隔离性使得局部变量的使用更加灵活,不会导致命名冲突。global语句与显式修改1global语句的作用如果需要在函数内部修改全局变量的值,可以使用global语句。global语句告诉Python解释器,接下来要使用的变量是在函数外部定义的全局变量。2global语句的使用使用global语句时,可以在函数内部直接修改全局变量的值。例如,globalx后,就可以在函数内部对全局变量x进行赋值操作。3global语句的注意事项虽然global语句可以修改全局变量,但过度使用会导致代码的可读性下降。因此,建议尽量避免使用global语句,除非确实需要修改全局变量。06lambda与内置函数速览匿名函数lambda语法1lambda函数的定义lambda函数是一种匿名函数,它使用lambda关键字定义,不需要指定函数名称。lambda函数的语法格式为:lambda参数列表:表达式。2lambda函数的特点lambda函数只能包含一个表达式,该表达式的结果就是函数的返回值。由于lambda函数没有名称,因此不会与其他函数发生命名冲突。lambda高阶用法示例lambda函数作为返回值可以将lambda函数作为普通函数的返回值。例如,定义一个函数返回lambda函数,然后通过返回的函数调用lambda函数。lambda函数作为序列元素可以将lambda函数作为列表或字典的元素。通过列表或字典的索引或键,可以调用lambda函数,并传递参数。lambda函数的灵活性lambda函数的灵活性在于它可以在不定义完整函数的情况下,快速实现简单的功能。这使得代码更加简洁,尤其是在处理简单逻辑时。数学与字符串内置函数1数学运算内置函数Python提供了丰富的数学运算内置函数,如abs()用于计算绝对值,divmod()用于同时返回商和余数,pow()用于计算幂运算,round()用于四舍五入等。2字符串处理内置函数字符串处理函数包括len()用于获取字符串长度,str()用于将其他类型转换为字符串,chr()和ord()用于字符与Unicode编码的转换,hex()和bin()用于数字的进制转换等。序列操作内置函数01序列操作函数概述Python提供了多种内置函数用于序列操作,如all()、any()、range()、map()、filter()、reduce()、zip()、sorted()和reversed()等。02序列操作函数的应用这些函数可以用于对序列进行各种操作,如判断元素真假、生成序列、映射、过滤、合并、排序和反转等。通过组合使用这些函数,可以实现复杂的数据处理逻辑。03序列操作函数的优势使用内置的序列操作函数可以简化代码,提高开发效率。这些函数经过优化,性能较高,且代码可读性更强。07综合案例:名片系统需求拆解与数据结构设计1名片系统的功能需求名片系统需要实现的功能包括:新建名片、显示全部名片、查询名片、修改名片、删除名片和退出系统。这些功能需要通过用户输入数字来选择执行。2数据结构的选择为了存储名片信息,选择使用列表嵌套字典的结构。每张名片的信息存储在一个字典中,包括姓名、电话、QQ和邮箱四个字段,所有名片字典存储在一个全局列表中。3数据结构的优势这种数据结构的优点是操作简单,易于实现增删改查功能。全局列表可以方便地管理所有名片,字典则可以快速访问和修改名片的各个字段。函数封装菜单与CRUD流程菜单显示函数定义一个函数show_menu(),用于显示欢迎界面和功能菜单。这个函数在程序启动时和每次用户操作完成后都会被调用,以提示用户下一步的操作。CRUD操作函数定义四个函数分别实现新建名片(new_card)、显示全部名片(show_all)、查询名片(search_card)和修改或删除名片(deal_card)的功能。这些函数共同完成了名片系统的全部业务逻辑。输入扩展与健壮性细节输入扩展函数为了提升用户体验,定义了一个输入扩展函数input_card_info()。该函数允许用户在修改名片信息时选择跳过,保留原有值。主循环与退出确认程序的主循环使用whileTrue实现,持续等待用户输入。当用户选择退出时,会再次确认是否真的要退出,确保操作的准确性。交互反馈在每个操作完成后,都会给用户明确的反馈信息,告知操作是否成功,以及相关的操作结果。这使得用户能够清楚地了解程序的运行状态。感谢您的观看THANK
YOU
FOR
READING!面向对象程序设计目录CONTENTS面向对象概述01创建类和实例对象02属性类型解析03方法分类详解04继承机制实践05综合案例演示06复习题检测0701面向对象概述对象概念与特征对象概念与特征对象是现实世界中客观存在的,如人、桌子、狗、飞机等都可以看成是对象。每个对象都有静态属性和动态行为。封装原理与优势12封装原理封装是将数据和方法组合在一个整体内,并对外部隐藏其内部的细节。封装优势封装可以简化编程,提高数据的安全性,同时也可以提高代码的可重用性和可维护性。继承机制与规则02030104继承概念和语法继承是在一个类的基础上制定新类,新类继承父类属性和方法并可增加新属性和方法。语法:classSub(Base):super函数super()函数可替代父类名称,避免父类名修改时需修改所有子类的麻烦。方法重写子类可重写父类方法,通过super()调用父类方法并进行扩展或修改。继承示例定义Person类,Teacher和Work类继承Person类,分别添加subject和job属性并输出信息。多态特性与实现多态特性多态即为不同的对象对同一个消息做出不同的响应。多态机制使具有不同内部结构的对象可以共享相同的外部接口。多态实现通过一个公共的类,操作可以通过相同的方式予以调用,虽然针对不同对象的具体操作不同。02创建类和实例对象类定义与结构01020304对象对象是现实世界中客观存在的,如人、桌子、狗、飞机等都可以看成是对象。每个对象都有静态属性和动态行为。封装封装是将数据和方法组合在一个整体内,并对外部隐藏其内部的细节。封装可以简化编程,提高数据的安全性。继承当多个类具有相同的属性和方法时,可以将相同的部分抽取出来放到一个类中作为父类,其他类继承这个父类。多态多态即为不同的对象对同一个消息做出不同的响应。多态机制使具有不同内部结构的对象可以共享相同的外部接口。实例化对象操作1234创建实例对象使用类可以创建一个实例,也叫实例对象。生产线要生产一批产品,首先要做出这个产品的模具,而这个模具就是类,生产出来的具体产品就是实例对象。实例对象属性访问如果想要查看类中的属性值,可以用实例名.属性名。运行结果:'小白'。实例对象方法调用如果想要查看类中的方法,可以用实例名.方法名。cat.eat()运行结果:猫爱吃鱼。实例对象属性添加如果想要给实例对象添加新的属性,可以用实例名.新的属性名。cat.color='白色'。03属性类型解析self属性作用self属性作用self表示对象本身,在方法的参数列表中作为第一个参数,实例对象调用方法时无需传递参数给self。类属性特性类属性可通过类名或实例名访问,如D='小白'修改类属性。实例属性属于实例对象,通常在init()方法中定义,仅能通过实例名访问。类属性特性类属性是定义在类中且在函数体外的属性,所有类的实例对象共享该属性。类属性与实例属性区别:类属性共享,实例属性独立,如Square类的边长a为实例属性。实例属性特点01实例属性特点实例属性通常在init()方法中定义,创建实例时初始化该属性。实例属性只能通过实例名访问。04方法分类详解实例方法调用12实例方法调用在类中定义的方法默认为实例方法,第一个参数是self,一般通过实例名.方法名访问也可以通过类名.方法名访问。实例方法示例定义Student类包含实例方法work(),通过s1.work()或Student.work(s1)调用,输出"努力学习"。静态方法定义静态方法定义静态方法前面需要添加“@staticmethod”,静态方法不需要self参数,形式上和普通函数一样。01类方法应用类方法应用实例类方法前面添加“@classmethod”,第一个形式参数是cls,即类对象本身。类方法可以用类名.方法名访问也可以通过实例名.方法名访问。实例名访问类方法s3=Student(),print(s3.modify_height(+0.05)),运行结果:1.7。类名访问类方法print(Student.modify_height(+0.07)),运行结果:1.72。构造方法功能构造方法功能构造方法就是__init__方法,当创建类的实例的时候,系统会自动调用构造方法,从而实现对类的初始化操作。析构方法作用析构方法作用析构方法为__del__方法,当实例对象结束其生命周期时,系统会自动执行析构方法,进行资源释放。05继承机制实践继承语法结构2314继承语法结构在Python中,类名右侧使用小括号将要继承的父类名称括起来,实现类的继承。子类与父类子类继承父类的属性和方法,并可增加新的属性和方法。父类名称为Base,子类名称为Sub。多继承父类可以有多个,类名之间用逗号分隔。子类继承多个父类的属性和方法。类体定义类体由方法和属性等定义语句组成。若无具体功能,可用pass语句代替。super函数应用super函数应用super()函数代替父类名字,解决父类名修改导致子类多处修改的问题。方法重写规则方法重写规则方法重写是指在子类中重新定义父类的方法,子类可根据需求对父类中的方法进行扩展或者修改。父类方法调用如果在子类中需要调用父类的方法可以用super()函数。方法重写示例子类Teacher和Worker分别重写父类Person的think方法,并调用super().think()保留父类方法功能。测试结果测试结果显示子类方法执行时先执行父类think方法,再执行子类特有逻辑。06综合案例演示多级继承实现123多级继承实现定义Person类、Teacher类、Work类,实现继承关系。子类Teacher和Work继承Person的属性和方法,并扩展新属性。super函数应用使用super()函数代替父类名称,解决父类名修改时需同步修改所有子类的问题。方法重写机制子类重写父类think()方法,通过super()调用父类方法后扩展新功能。07复习题检测选择题要点01020304类定义关键字在Python中,可以使用class关键字来定义一个类。类与对象关系对象是类的实例化,类封装对象的属性和行为。初始化方法在Python中,使用__init__()方法来初始化一个类的实例。self变量Python类中包含self变量,表示当前对象本身,可访问类的成员。填空题重点面向对象特点面向对象的3个最主要的特点是封装、继承、多态。类方法修饰定义类时,在一个方法前面使用@classmethod进行修饰,则该方法属于类方法。继承关系在现有类基础上构建新类,新的类称作子类,现有的类称作父类。静态方法修饰定义类时,在一个方法前面使用@staticmethod进行修饰,则该方法属于静态方法。综合应用题Part01Part03Part02计算圆的周长和面积创建一个类,计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烧碱动设备安装施工设计方案
- 园林绿化工程苗木栽植规范方案
- 麻醉循环管理指南
- 三叉神经痛治疗指南(2026版)
- 防洪防汛施工方案
- 防止人才流失的薪酬设计方案
- 设计模式在软件开发中的应用概述
- 新华人寿荣欣世家终身寿险利益条款
- 东鹏饮料跟踪报告:Q1收入增长有望超预期短期“糖税”传闻扰动无碍长期逻辑
- 论大数据时代下企业管理模式创新
- DB12 685-2016 反恐怖防范管理规范 第18部分:文博场馆影剧院
- 企业年度会议活动策划与场地布置
- JTG B05-01-2013 公路护栏安全性能评价标准
- 《 尿的形成和排出 第2课时》示范公开课教学课件【生物北师大七年级下册】
- 清明节前安全培训课件
- (新版)国民经济行业分类代码表(八大行业)
- 创意园孵化器大楼场区工程施工组织设计
- 聋校高年级阅读教学
- 工程勘察设计收费标准(2002年修订本)完整版
- 黑龙江省各地市基准地价20160104
- GA 420-2021警用防暴服
评论
0/150
提交评论