还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
教程编程培训从入Python门到精通欢迎参加本次编程培训课程!作为当今最受欢迎的编程语言之Python Python一,以其简洁的语法和强大的功能,正在各个领域发挥着重要作用无论您是编程新手还是希望拓展技能的开发者,本课程都将为您提供全面而系统的学习体验Python在接下来的课程中,我们将从基础概念开始,逐步深入的高级特性,Python通过实际案例帮助您掌握编程技能本课程不仅注重理论知识的传Python授,更强调实践能力的培养,让您能够将所学知识应用到实际工作中让我们一起开启这段学习之旅,探索编程的无限可能!Python什么是?Python1创建历史由荷兰程序员于年圣诞节期Python Guidovan Rossum1989间创建,并于年首次发布语言名称源自英国喜剧团体1991,而非蟒蛇Monty Python2语言特点是一种高级、解释型、通用编程语言它注重代码的Python可读性,语法简洁明了,使用缩进而非括号来划分代码块,遵循优雅和明确的设计哲学3发展现状经过多年发展,已成为全球最流行的编程语言之一,Python拥有庞大的社区支持和丰富的第三方库目前主要有Python2和两个版本,已于年正式停止支持Python3Python22020的应用领域Python数据分析与人工智能开发Web在数据科学领域独占鳌头,Python借助、等框架,可以Django FlaskPython、、等库为数NumPy PandasMatplotlib用于构建功能强大的网站和后端服务知名据处理提供强大支持在机器学习和人工智网站如、和Instagram PinterestDropbox能方面,和等框架使TensorFlow PyTorch都使用作为后端语言Python成为首选语言Python教育领域自动化运维简洁的语法和丰富的库使其成为编脚本可以轻松自动化系统管理任Python Python程教育的理想选择,许多学校和培训机构都务,如文件操作、网络配置和服务监控,极将其作为入门编程语言进行教学大提高运维效率环境搭建与开发工具下载安装包Python访问官方网站下载最新版本的安装程序对于中国python.org Python用户,也可以使用国内镜像站点如淘宝镜像加速下载建议选择Python版本,因为已停止维护
3.x Python2安装配置Python运行安装程序,注意勾选选项以便在命令行Add Pythonto PATH中直接使用安装完成后,打开命令提示符或终Python Windows端,输入验证安装是否成功Mac/Linux python--version选择并配置IDE为提高开发效率,建议安装专业的集成开发环境Python提供强大的调试和项目管理功能,适合大型项目;PyCharm VS轻量快速,配合插件同样强大;对初学者而言,Code Python自带或也是不错的选择IDLEPythonThonny第一个程序Python编写运行与执行Hello World打开你选择的或文本编辑器,创有多种方式可以运行程序IDE Python建一个新的文件(以为在中点击运行按钮;在命令行Python.py IDE扩展名)输入最简单的代中导航到文件所在目录,输入Python码这行文件名;或使用printHello,World!python.py代码使用内置的函数在屏幕上的交互式环境程序print PythonREPL显示文本执行后,你将在控制台看到输出的文本Hello,World!常见错误处理初学者常见的错误包括拼写错误、缺少引号或括号、缩进不一致等Python会给出明确的错误提示,如(语法错误)或SyntaxError(缩进错误)仔细阅读错误信息,对照代码进行修正是IndentationError解决问题的关键基础语法与格式规范缩进规则使用缩进来表示代码块,而不是花括号或关键字标准缩进Python是个空格,必须保持一致错误的缩进会导致语法错误或逻辑错4误,这是区别于其他语言的重要特点Python命名规范变量名应使用小写字母,多个单词用下划线连接();snake_case类名使用驼峰命名法();常量通常全部大写避免使CamelCase用的保留字(如、、等)作为变量名Python iffor class注释规范单行注释使用号,多行注释可以使用三重引号(或)文档字#符串()用于函数、类或模块的开头,提供使用说明,通docstring常使用三重双引号遵循规范可以使代码更易读、更专业PEP8变量与数据类型整数类型int表示整数值,如、、的整数没有大小限制,可以存储任意大的数1-1042Python值整数运算包括加减乘除(返回浮点数,返回整数)和取模()///%浮点类型float表示小数值,如、注意浮点运算可能存在精度问题,如不
3.14-
0.
0010.1+
0.2精确等于,这是计算机表示小数的固有限制
0.3布尔类型bool只有和两个值,用于条件判断数字、空字符串、空列表等在条件判True False0断中视为,其他值视为False True字符串类型str表示文本数据,可使用单引号、双引号或三引号定义字符串支持索引、切片和丰富的方法,如、、等upper lowersplit字符串基本操作操作类型示例代码结果字符串定义s=你好,世界创建字符串变量字符串拼接s1+s2或合并多个字符串{}{}.formats1,s2字符串分割a,b,c.split,[a,b,c]字符串替换hello.replacel,L heLLo格式化(旧式)%s有%d个苹果%名替换%s和%d为变量值字,数量格式化(新式)f{名字}有{数量}个苹果直接在{}中使用变量Python的字符串是不可变对象,这意味着一旦创建就不能修改其内容所有看似修改的操作实际上都是创建了新的字符串对象字符串支持切片操作,如s[0:3]可获取前三个字符对于中文等Unicode字符,Python提供了良好的支持,可以直接在代码中使用列表()详解List修改操作修改元素、排序、反转查询操作索引、切片、迭代、成员检测增删操作添加、插入、删除、清空元素列表创建直接创建、列表推导式、转换其他类型列表是Python中最常用的数据结构之一,可以存储任意类型的对象列表是可变的,这意味着创建后可以修改其内容常用方法包括append添加元素、extend合并列表、insert插入元素、remove删除元素等Python列表支持负索引,如fruits[-1]表示最后一个元素切片操作如list[1:4]可以提取部分元素列表迭代常用for循环,如for fruitin fruits:列表嵌套可以创建多维数据结构,如矩阵表示元组()与不可变类型Tuple元组的特性元组与列表比较元组是的内置数据类型,使用圆括号定义,如元组比列表更轻量级,消耗更少的资源不可变特性使元组可Python1,2,元组的关键特点是不可变性,一旦创建,其内容不能被修作为字典的键或集合的元素,而列表不可以多返回值函数实3改、添加或删除际上是返回元组,可通过解包获取各个值元组支持与列表相似的索引、切片和迭代操作,但不支持修改列表适合存储同类型数据集合并频繁修改,元组适合存储异构元素的方法元组通常用于表示固定集合的数据,如坐标点数据且一旦定义就不再改变的情况安全性要求高的场景也常x,或颜色值使用元组防止数据被意外修改y RGB255,0,0字典()与集合()Dict Set字典基础操作集合基础操作字典使用花括号定义,存储键值集合也使用花括号定义,如{}{}{1,对,如,或使用函数创建集{key1:value1,key2:2,3}set通过访问值,合中的元素唯
一、无序、不可索value2}d[key]添加或修改引常用于去重操作,如d[key]=new_value项,删除项键必须是有重复元素的列表支del d[key]listset不可变类型(如字符串、数字、元持添加、删除、包add remove组),值可以是任何类型含检查等操作in高级特性与应用字典推导式可简洁创建字典集合支持数学集合运算并{k:v fork,v in...}集、交集、差集、对称差集字典可嵌套创建复杂数据结构,集合常用|-^于数据去重和成员检测字典保持键的插入顺序Python
3.6+的输入与输出Python用户输入通过input函数获取用户输入控制台输出使用print函数显示内容文件读写open函数处理文件IO操作input函数从用户获取键盘输入,返回值始终是字符串类型如需数值类型,需要使用int或float进行转换例如age=intinput请输入您的年龄print函数灵活多变,可输出多个值,如printname,age,score参数sep指定分隔符,end指定结尾字符(默认换行)格式化输出可使用f-string,如printf{name}的成绩是{score}分,简洁直观文件操作基本流程打开文件(指定模式如读r、写w)、操作文件(读read/写write)、关闭文件close推荐使用with语句自动关闭文件with openfile.txt,r asf:内容=f.read运算符与表达式算术运算符基本计算(加)、(减)、(乘)、(浮点除)、(整除)、(取+-*///%余)、(幂)与其他语言不同,的整除返回商的整数部分,如**Python//等于幂运算效率高于循环乘法,如计算的次方7//232**10210比较与赋值比较运算符、、、、、,返回布尔值或特殊的==!===True Falseis运算符检查两个对象是否相同(而非值相等)赋值运算符基本赋值,=、等复合赋值可简化如为+=-=x=x+1x+=1逻辑与成员逻辑运算符(与)、(或)、(非),用于复合条件支持短路and ornot评估,如左侧为则不再计算右侧成员运算符检查元素是否在序and Falsein列中,常用于列表、字典、字符串等链式比较如更为简洁abc条件语句if-elif-else12基本语句结构if if-else最简单的条件判断,当条件为True时执行缩进的条件为True执行if块,否则执行else块提供了代码块例如:if age=18:print成年人二选一的执行路径3链if-elif-else处理多条件情况,按顺序评估条件,执行第一个为True的分支Python的条件语句使用冒号:和缩进来定义代码块,无需括号或关键字条件表达式可以是任何返回布尔值的表达式,如比较、成员检测、函数调用等Python将任何非零数值、非空序列、非None对象视为True,零值、空序列、None视为False条件语句可以嵌套使用,创建复杂的决策树多层嵌套时注意缩进层次,保持代码可读性Python还支持三元条件表达式a ifcondition elseb,这是更简洁的条件赋值方式循环结构与for while循环循环for while循环用于遍历可迭代对象(如列表、字符串、字典等)的循环在条件为时重复执行代码块基本语法为for while True元素基本语法为变量可迭代对象代码块常与条件代码块适用于不确定迭代次数的场景,如用户for in:while:函数结合使用控制迭代次数,如输入验证、条件满足判断等range for i in range5:遍历字典时,可使用方法同时获取键和值创建无限循环,必须通过语句或语items forkey,whileTrue:break return在循环中,可使用函数句退出编写循环时,确保循环条件最终会变为,value indict.items:enumerate whileFalse同时获取索引和元素避免无限循环循环通常需要在循环体内更新控制变for index,item inenumeratelist:while量,否则容易导致死循环提供了控制循环的特殊语句立即退出当前循环;跳过当前迭代,继续下一次迭代;作为占位符,表Python breakcontinue pass示不执行任何操作这些语句通常与条件判断结合使用,提供更灵活的循环控制循环中的子句else循环开始for或while循环初始化并开始执行主体代码块循环迭代重复执行循环体,直到条件不满足或遍历完成判断退出方式检查循环是自然结束还是通过break语句退出代码块else如果循环自然结束(非break退出),则执行else块Python循环的else子句是一个特殊功能,不同于条件语句中的else循环的else子句仅在循环正常完成(没有通过break语句提前终止)时执行这一特性在搜索算法中特别有用,可以明确表示是否找到了目标元素对于for循环,当遍历完所有元素后执行else;对于while循环,当条件变为False时执行else如果循环体内执行了break语句,则else子句不会被执行例如,检查列表中是否存在特定值for item in list:if item==target:print找到了;break;else:print未找到这一特性减少了使用标志变量的需要,使代码更简洁虽然初看起来有些违反直觉,但掌握后能编写更优雅的代码列表推导式1基本语法2添加条件筛选列表推导式是一种简洁创建列表可在推导式中添加条件进行筛if的方式,基本语法为表达式选表达式变量可迭代[[for in变量可迭代对象它将对象条件只有满足条件的for in]if]循环和条件判断融合在一行代码元素才会被包含在结果列表中中,替代传统的循环和例如for[x for x inrange100操作,使代码更简洁生成所有小于append if x%2==0]易读的偶数1003嵌套推导式支持多重循环嵌套表达式变量可迭代对象变量可for[for1in1for2in迭代对象外层循环在前,内层循环在后,与普通嵌套循环顺序相反2]复杂推导式虽然简洁,但可能影响可读性,应适度使用列表推导式通常比等效的循环快,主要因为它是在层面优化的,且for20-30%C避免了反复调用方法的开销对于处理大型数据集时,这种性能差异尤append为明显函数基础函数定义参数传递使用关键字定义函数,指定名称和参数调用时将实参传递给函数的形参def返回结果函数执行通过语句将计算结果返回给调用者执行函数体内的代码逻辑return函数是程序的基本构建块,用于封装可重用的代码段函数定义使用关键字,后跟函数名和圆括号内的参数列表函数体必须缩进,通Python def过语句返回值若无语句或后未指定值,函数默认返回return returnreturn None函数支持位置参数、关键字参数和默认参数位置参数根据定义顺序传递;关键字参数使用参数名指定,可不按顺序传递;默认参数在定义Python时设置默认值,调用时可省略作用域规则决定变量可见性,局部变量仅在函数内可见,全局变量在整个模块中可见函数参数的进阶参数类型语法说明位置参数def funca,b:必须按顺序提供的参数默认参数def funca,b=5:有默认值,调用时可省略关键字参数funcb=2,a=1以参数名=值形式传递,顺序任意可变位置参数def func*args:接收任意数量的位置参数,形成元组可变关键字参数def func**kwargs:接收任意数量的关键字参数,形成字典仅位置参数def funca,/,b:/前参数只能按位置传递,不能用关键字仅关键字参数def func*,a,b:*后参数只能按关键字传递,不能按位置参数排列顺序必须是位置参数默认参数可变位置参数仅关键字参数可变关键字参数不遵循此顺序会导致语法错误默认参数的默认值只在函数定义时计算一次,对于可变对象如列表作为默认值需特别注意,通常使用None作为默认值然后在函数体内初始化匿名函数lambda基本语法与特点典型应用场景函数是一种小型匿名函数,使用关键字定义,函数最常见的用途是与内置高阶函数如、lambda lambdalambda sorted基本语法为参数表达式它可以接收多个参数,、和配合使用函数接受lambda:filter mapreduce sortedkey但只能有一个表达式,且表达式的结果自动作为返回值参数指定排序依据,如sortedstudents,key=lambda s:函数主要用于需要一个简短函数的场景,尤其是作为按成绩排序函数筛选序列中符合条件的元lambda s[score]filter高阶函数的参数时素,如提取正数listfilterlambda x:x0,numbers与常规函数不同,函数没有名称(匿名),通常用于函数将函数应用于序列的每个元素,如lambda map临时使用且逻辑简单的场景虽然可以将赋值给变将所有元素翻倍lambda listmaplambda x:x*2,numbers量,如,但通常优先使用定义具函数(需从导入)对序列元素进行累积操add=lambdax,y:x+y defreduce functools名函数,以提高代码可读性作,如计算总和reducelambda x,y:x+y,numbers GUI编程中也常用连接事件和处理函数lambda常用内置函数PythonPython提供了丰富的内置函数,无需导入即可使用len获取序列长度;range生成数字序列,常用于循环;min、max、sum计算最小值、最大值和总和;sorted返回排序后的新列表,原列表不变;abs计算绝对值;round四舍五入enumerate函数遍历序列时同时返回索引和值;zip函数将多个序列对应位置元素打包成元组;map将函数应用于序列的每个元素;filter筛选满足条件的元素;any、all检查是否有任意/所有元素为True;isinstance检查对象类型;dir列出对象的所有属性和方法模块与包的导入模块导入语法常用标准库第三方包管理提供多种导入语法标准库丰富多样提供系统相是官方包管理工具,常用命Python importPython syspip Python导入整个模块;关功能;处理文件和目录操作;令安装包;module frommodule ospip installpackage pip导入特定内容;处理日期和时间;提供数学卸载包;查看import nameimport datetimemath uninstallpackage piplist使用别名;函数;生成随机数;处理正则表已安装包;查看包信module asalias frommodule randomre pipshow package导入所有内容(不推荐)导入达式;处理数据;处理息;更新包使用import*json JSONurllib pip install-U package语句通常放在文件顶部,按标准库、第三操作;提供额外的数据结可批量安URL collectionspip install-r requirements.txt方库、自定义模块的顺序排列构这些模块无需额外安装,直接导入使装项目依赖,便于项目环境复制用组织项目结构与包管理包结构设计合理组织文件与模块层次配置__init__.py定义包的导入行为与接口虚拟环境管理隔离项目依赖与版本在Python中,包是一种组织模块的方式,实际上就是一个包含__init__.py文件的目录__init__.py文件(即使为空)是必要的,它告诉Python该目录是一个包,可以被导入该文件还可以定义包的导出接口,通过设置__all__列表控制from packageimport*导入的内容合理的项目结构通常包括顶层包目录(项目名);子包和模块;tests目录用于测试代码;docs目录存放文档;README.md描述项目;requirements.txt列出依赖;setup.py定义安装信息这种结构便于代码维护和分发虚拟环境是项目依赖隔离的最佳实践使用venv模块创建python-m venvmyenv;在Windows下通过myenv\Scripts\activate激活,在Unix系统下通过source myenv/bin/activate激活激活后安装的包只对当前环境有效,避免全局环境污染和版本冲突异常与错误处理异常链与传播使用raise from连接相关异常多种异常处理捕获多类型异常与finally语句基本异常处理try...except块捕获错误Python使用异常机制处理程序运行时错误常见内置异常包括TypeError(类型错误)、ValueError(值错误)、IndexError(索引越界)、KeyError(键不存在)、FileNotFoundError(文件不存在)、ZeroDivisionError(除零错误)等这些异常类都继承自BaseException基类基本异常处理使用try...except结构代码放在try块中执行,若发生异常则执行匹配的except块可同时处理多种异常except TypeError,ValueErroras eexcept后不指定异常类型将捕获所有异常(不推荐)else子句可跟在except后,仅在没有异常时执行;finally子句总是执行,常用于释放资源可使用raise语句主动抛出异常,如发现参数无效时raise ValueError无效参数自定义异常类通过继承Exception实现,增加程序的语义表达能力异常处理应当明确、精确,避免过度捕获掩盖真正问题文件操作基础打开文件使用open函数打开文件,指定文件路径和模式r(读取,默认)、w(写入,覆盖原内容)、a(追加)、b(二进制模式)、t(文本模式,默认)可组合使用,如wb表示二进制写入读写操作读取方法read读取全部内容;readsize读取指定字节;readline读取一行;readlines读取所有行到列表写入方法writestr写入字符串;writelineslist写入字符串列表(不自动添加换行)对大文件,推荐逐行读取而非一次性加载全部内容关闭文件使用file.close手动关闭文件,释放系统资源更推荐使用with语句(上下文管理器)自动处理文件关闭with openfile.txt,r asf:content=f.read即使出现异常,with块结束时也会自动关闭文件,避免资源泄露处理文件路径时,推荐使用os.path模块或pathlib模块,确保跨平台兼容性文件异常处理很重要,应捕获可能的FileNotFoundError、PermissionError等异常处理非英文文本文件时,需指定正确的编码,如openfile.txt,r,encoding=utf-8面向对象编程初识类与对象基础构造方法与实例操作面向对象编程()是一种编程范式,基于对象概念设计方法是构造方法,在创建实例时自动调用,用于初始OOP__init__程序在中,一切皆为对象,包括整数、字符串等化实例属性参数表示实例本身,必须是方法的第一个参Python self类()是对象的蓝图,定义了对象的属性和方法;对象数例如class def__init__self,name,age:self.name=()是类的实例,拥有具体的数据和行为object name;self.age=age使用关键字定义类,如类内部的函数实例属性属于单个实例,通过属性名定义和访问实例方class classStudent:self.称为方法();类内部的变量称为属性法通过访问实例的属性和其他方法方法的第一个参数必method self()创建实例使用类名加括号,如须是,调用时不需要显式传递没有真正的私有属attribute student=self Python,然后通过点访问实例的属性和方法,如性,通常用单下划线前缀()表示应被视为私有,双下Student notation_name、划线前缀()会导致名称重整student.name student.study__name类的继承与多态继承基础继承是面向对象编程的核心机制,允许子类继承父类的属性和方法在Python中,通过在类定义时在括号中指定父类来实现继承class ChildParent:子类可以添加新的属性和方法,也可以重写(override)父类的方法方法重写与super子类可以定义与父类同名的方法来重写父类方法重写方法时,可以使用super函数调用父类的方法,如super.__init__name,age调用父类的构造方法super避免了直接引用父类名,使代码更灵活,尤其在多重继承时多态与类型检查多态允许不同类的对象对同一消息作出不同响应Python的动态类型特性使多态自然实现只要对象实现了方法,就可以调用,不需要指定类型使用isinstanceobj,Class可检查对象是否是某类或其子类的实例;issubclassChild,Parent可检查类继承关系Python支持多重继承,一个子类可以继承多个父类class ChildParent1,Parent2:多重继承中,方法查找顺序由MRO(Method ResolutionOrder)确定,可通过类的__mro__属性查看Python使用C3算法计算MRO,确保查找顺序合理类变量与实例变量类变量实例变量类变量是在类内部、方法之外定义的变实例变量在方法内部使用定义,self.var量,被类的所有实例共享通过类名或实属于特定实例每个实例都有自己的实例例访问,如或ClassName.var变量副本,互不影响实例变量通常在适用于所有实例共享的数instance.var方法中初始化,也可在其他方法__init__据,如计数器、常量配置等修改类变量中创建当实例访问变量时,先查找实例会影响所有实例,除非实例有同名的实例变量,找不到再查找类变量变量属性装饰器属性访问控制装饰器将方法转换为属性,实没有真正的私有变量,但有约定@property Python现功能;实现俗成的访问控制无前缀变量视为公有;getter@attr.setter setter功能;实现功能单下划线前缀()表示受保护,不应@attr.deleter deleter_var这种方式可以控制属性访问,实现计算属直接访问;双下划线前缀()会进__var性、惰性加载、验证等功能,同时保持简行名称重整为,提供_ClassName__var洁的访问语法名称冲突保护魔术方法与特殊方法字符串表示与显示__str__方法定义对象的字符串表示,被str和print调用,面向用户友好__repr__方法定义对象的官方字符串表示,被repr调用,通常包含重建对象所需信息,面向开发者理想情况下,evalreprobj应该返回等价对象运算符重载通过定义特殊方法可重载运算符__add__self,other重载加法+;__sub__self,other重载减法-;__mul__self,other重载乘法*;__eq__self,other重载相等==;__lt__self,other重载小于这使自定义对象能像内置类型一样使用运算符,代码更简洁直观容器与迭代协议实现容器协议的方法__len__self返回长度,被len调用;__getitem__self,key支持索引访问obj[key];__setitem__self,key,value支持索引赋值obj[key]=value实现迭代器协议__iter__self返回迭代器对象;__next__self返回下一个值,没有更多值时抛出StopIteration异常资源管理与上下文__enter__self和__exit__self,exc_type,exc_val,exc_tb方法实现上下文管理协议,支持with语句__enter__在进入with块时调用,返回值赋给as后的变量;__exit__在离开with块时调用,处理异常和清理资源常用于文件操作、数据库连接、锁等资源管理装饰器()初步Decorator装饰器定义基础语法装饰器是包装函数并扩展其功能的函数使用@符号将装饰器应用到函数或方法实际应用多层装饰用于日志、权限控制、缓存等横切关注点可以叠加多个装饰器,由内而外执行装饰器本质上是一个函数,它接受一个函数作为参数并返回一个新函数,通常不修改原函数的源码基本形式为def decoratorfunc:def wrapper*args,**kwargs:#在调用原函数前执行代码;result=func*args,**kwargs;#在调用原函数后执行代码;return result;return wrapper使用@decorator语法糖应用装饰器,等价于func=decoratorfunc带参数的装饰器需要增加一层嵌套def decorator_with_argsarg1,arg2:def decoratorfunc:def wrapper*args,**kwargs:#使用arg1,arg2和func;returnfunc*args,**kwargs;return wrapper;return decorator应用时使用@decorator_with_argsarg1,arg2标准库functools提供了wraps装饰器,用于保留被装饰函数的元数据(如名称、文档字符串)from functoolsimport wraps;def decoratorfunc:@wrapsfunc defwrapper*args,**kwargs:...;return wrapper;return wrapper这有助于调试和生成文档生成器与迭代器生成器基础迭代器协议生成器是一种特殊的迭代器,使用语句返回值并暂停执迭代器是实现了和方法的对象yield__iter____next__行,下次调用时从暂停点继续创建生成器有两种方式生成返回迭代器自身,返回下一个值,没有更__iter____next__器函数和生成器表达式生成器函数包含语句,调用时多值时抛出异常可迭代对象(实现了yield StopIteration返回生成器对象,不立即执行函数体方法的对象)可用于循环和其他需要迭代的上下__iter__for文生成器表达式类似列表推导式,但使用圆括号而非方括号内置函数将可迭代对象转换为迭代器,获取迭代器iter next相比列表推导式,生成器不会一次的下一个值与列表不同,迭代器是单向、一次性的一旦遍x*x forx inrange10性生成所有结果,而是按需生成,因此适合处理大规模数据或历完毕,需要重新创建才能再次遍历迭代器和生成器的惰性无限序列,节省内存评估特性使其适合处理大数据流和操作I/O生成器可以使用方法向暂停的语句发送值,这个值会成为表达式的结果方法向生成器内部抛出异常,send yieldyield throw方法终止生成器这些高级特性使生成器可以实现协程和状态机等复杂模式close列表字典集合推导式综合//推导式类型语法形式示例列表推导式表达式变量可迭代对象条件[for inif][x*x forx inrange10ifx%2==0]字典推导式键表达式值表达式变量可迭代对象{:for in{x:x*x forx inrange5}条件if}集合推导式表达式变量可迭代对象条件{for inif}{x%5forx inrange20}生成器表达式表达式变量可迭代对象条件for inifx*x forxinrange1000推导式是最强大的特性之一,可以简洁地创建列表、字典和集合所有推导式都支持多重循环和条件筛选,语法类似于数学中的集合定Python for义多重循环的语法为表达式变量可迭代对象变量可迭代对象条件,等价于嵌套循环,外层循环为第一个for[for1in1for2in2if]for for处理嵌套数据结构时,推导式特别有用例如,将字典列表转换为字典;提取嵌套列表的所有元素{item[id]:item foritem initems_list};创建矩阵转置推导式虽[subitem foriteminnested_list forsubitem initem][[row[i]for rowin matrix]foriin rangelenmatrix
[0]]然强大,但过度使用或过于复杂的推导式可能降低代码可读性,应适度使用正则表达式初步正则表达式基础常用匹配函数正则表达式是描述字符串模式的强大工re.searchpattern,string在字符串具,用于搜索、匹配和替换文本中搜索模式,返回第一个匹配对象或Python通过re模块提供正则表达式支None;re.matchpattern,string只持使用re.compile可预编译模式,匹配字符串开头,返回匹配对象或提高多次使用的效率常用特殊字符.None;re.findallpattern,string返匹配任意单个字符;^匹配字符串开回所有匹配的子串列表;头;$匹配字符串结尾;*匹配0或多re.finditerpattern,string返回匹配次;+匹配1或多次;匹配0或1次;对象的迭代器匹配对象Match[abc]匹配字符集合;\d匹配数字;\w object包含匹配信息,可通过group匹配字母数字下划线获取匹配内容,start、end获取位置替换与分割re.subpattern,repl,string替换字符串中的匹配项,repl可以是字符串或函数;re.splitpattern,string以匹配项为分隔符分割字符串为列表在复杂替换中,可使用\
1、\2等反向引用捕获组,或在替换函数中处理匹配对象处理模式中的特殊字符时,可使用原始字符串rpattern避免转义冲突时间与日期处理模块datetimedatetime模块提供处理日期和时间的类datetime.date表示日期(年、月、日);datetime.time表示时间(时、分、秒、微秒);datetime.datetime结合日期和时间;datetime.timedelta表示时间差datetime.now获取当前日期时间;datetime.strptimestring,format将字符串转换为datetime对象;datetime.strftimeformat将datetime对象转换为字符串时间计算使用timedelta可进行时间计算加减日期(date1+timedeltadays=5);计算日期差(date2-date1);比较日期大小(date1date2)创建timedelta时可指定weeks、days、hours、minutes、seconds、microseconds等对于复杂的日期计算(如考虑月份天数、闰年),datetime模块自动处理,无需手动计算时区处理datetime.tzinfo是抽象基类,提供时区信息标准库中的timezone类实现了固定偏移时区处理时区推荐使用第三方库pytz或Python
3.9+的zoneinfo模块,支持所有标准时区和夏令时将本地时间转换为UTC local_dt.astimezonetimezone.utc;将UTC时间转换为特定时区utc_dt.astimezonetimezonetimedeltahours=8与数据序列化JSON基础概念JSONJSON(JavaScript ObjectNotation)是一种轻量级数据交换格式,易于人阅读和编写,也易于机器解析和生成它基于键值对,类似Python的字典结构Python通过内置的json模块提供JSON操作支持JSON的数据类型包括对象(对应Python字典)、数组(对应Python列表)、字符串、数字、布尔值(true/false)和null(对应Python的None)序列化与反序列化序列化(Serialization)是将Python对象转换为JSON字符串的过程,使用json.dumps函数json_str=json.dumpspython_obj参数indent控制缩进美化输出;ensure_ascii=False允许非ASCII字符原样输出;sort_keys=True按键排序反序列化(Deserialization)是将JSON字符串转换回Python对象的过程,使用json.loads函数python_obj=json.loadsjson_str文件操作与自定义转换直接与文件交互可使用json.dumpobj,file将对象序列化并写入文件,json.loadfile从文件读取并反序列化对于自定义类或非JSON兼容类型,可提供default参数(序列化)或object_hook参数(反序列化)进行自定义转换例如,处理datetime对象json.dumpsdata,default=lambda obj:obj.isoformat ifisinstanceobj,datetime elseobj.__dict__科学计算基础NumPy是科学计算的基础库,提供高性能的多维数组对象和处理数组的函数与原生列表相比,数组存储相NumPy Pythonndarray PythonNumPy同类型元素,支持向量化操作,性能更高安装,导入创建数组方法从列pipinstallnumpy importnumpy asnp np.array[1,2,3]表创建;创建全数组;创建全数组;创建序列;创建等间距序列np.zeros3,30np.ones2,41np.arange10np.linspace0,1,5数组属性与操作返回维度;返回数据类型;改变形状;转置数组数组索引与切array.shape array.dtype array.reshapeshape array.T片与列表类似,但支持多维访问第一行第二列;访问第三列所有行;访问第
二、三行所有列通用Python array[0,1]array[:,2]array[1:3,:]函数()实现元素级操作或;或;或;;等ufuncs np.adda,b a+b np.subtracta,b a-b np.multiplya,b a*b np.sqrta np.sina数据分析入门Pandas核心数据结构数据访问与选择Pandas提供两种主要数据结构选择数据的方法df[A]或df.A选择Series(一维带标签数组)和单列(返回Series);df[[A,B]]DataFrame(二维表格数据结构)选择多列(返回DataFrame);Series类似带索引的NumPy数组或字df.iloc
[0]按整数位置选择行;典;DataFrame类似电子表格或SQL df.loc[label]按标签选择行;表,由多个Series组成创建df.iloc[0:3,0:2]按位置切片;DataFrame pd.DataFrame{A:df.loc[df[A]0]条件筛选[1,2],B:[3,4]}从字典创建;Pandas支持布尔索引,如df[df0]pd.read_csvfile.csv从CSV文件保留所有正值,替换负值为NaN;读取;pd.read_excelfile.xlsx从df[df[A]0df[B]0]组合Excel文件读取多个条件数据操作与分析常用操作df.describe生成统计摘要;df.mean、df.max等计算汇总统计;df.sort_valuesA按值排序;df.groupbyA.sum按列分组汇总;df.pivot_table创建透视表;df.applyfunc应用函数到行或列;df.mergedf2合并数据框;df.fillna0填充缺失值;df.dropna删除缺失值;df.astype转换数据类型;df.renamecolumns={A:a}重命名列数据可视化初步Matplotlib网络编程与模块requests请求基础HTTPHTTP是网络应用通信的基础协议requests模块是Python处理HTTP请求的标准库,比内置的urllib更简洁易用安装pip installrequests,基本使用import requests;response=requests.geturl发送GET请求;requests.posturl,data=data发送POST请求;requests.puturl,data=data发送PUT请求;requests.deleteurl发送DELETE请求请求与参数GET请求参数通过params传递requests.geturl,params={key:value};POST请求数据可用data传递表单数据或json传递JSON数据requests.posturl,data={key:value}或requests.posturl,json={key:value}设置请求头requests.geturl,headers={User-Agent:...}处理cookies使用cookies参数或Session对象控制超时requests.geturl,timeout=5响应处理Response对象包含服务器响应信息r.status_code返回状态码(200表示成功);r.text返回文本内容;r.json将JSON响应解析为字典;r.content返回二进制内容;r.headers返回响应头;r.cookies返回响应cookies;r.raise_for_status在请求不成功时抛出异常下载文件with openfile,wb asf:f.writer.content处理会话和认证requests.Session创建会话,保持cookies和连接;requests.geturl,auth=username,password进行基本认证;处理HTTPS证书验证问题可设置verify=False(不推荐)爬取网页内容常与BeautifulSoup库结合使用,提取HTML中的数据from bs4import BeautifulSoup;soup=BeautifulSoupr.text,html.parser多线程与多进程多线程编程多进程编程的模块提供多线程支持线程是程序执行的最小的模块提供类似的,但使Python threadingPython multiprocessingthreading API单元,共享同一进程的内存空间创建线程用独立进程而非线程进程有独立的内存空间,数据不共享,适合from threading创密集型任务创建进程import Thread;t=Threadtarget=function,args=arg1,CPU from multiprocessing import建线程对象;启动线程;等待线程结束;t.start t.join ThreadProcess;p=Processtarget=function,args=arg1,类也可以继承并重写方法启动进程;等待进程结束run p.start p.join线程安全是关键挑战使用对象(和进程间通信工具用于数据交换;创建双向通信通Lock lock.acquire QueuePipe)或语句保护共享资源;使用道;提供共享数据结构;和共享单个值或数lock.release withlock:Thread-Manager ValueArray()存储线程专属数据组进程池可处理并行任务local storagethreading.local Pythonfrommultiprocessingimport的全局解释器锁()限制了多线程在密集型任务上的性创建进程池;GIL CPUPool;pool=Poolprocesses=4能,但密集型任务仍能受益并行映射;I/O pool.mapfunction,iterable异步执行pool.apply_asyncfunction,args选择多线程还是多进程?密集型任务(如网络请求、文件操作)适合多线程,可以在等待操作时有效利用;密集型任务I/O I/O CPUCPU(如计算、图像处理)适合多进程,可以绕过限制,充分利用多核处理器对于简单的并行任务,模块提供了高GIL concurrent.futures级抽象,可自动选择线程或进程执行和ThreadPoolExecutor ProcessPoolExecutor与数据库基础Python基础操作SQLiteSQLite是一个轻量级嵌入式SQL数据库,Python标准库中的sqlite3模块提供接口连接数据库import sqlite3;conn=sqlite
3.connectdatabase.db创建或打开数据库;cursor=conn.cursor创建游标;cursor.executeSQL语句执行SQL命令;conn.commit提交更改;conn.close关闭连接常用SQL操作创建表CREATE TABLE;插入数据INSERTINTO;查询SELECT;更新UPDATE;删除DELETE参数化查询与结果获取使用参数化查询预防SQL注入cursor.executeINSERT INTOusers VALUES,,name,age获取查询结果cursor.fetchone获取一行;cursor.fetchall获取所有行;cursor.fetchmanysize获取指定数量行结果处理查询结果作为元组或字典返回(设置row_factory=sqlite
3.Row);for rowin cursor:可遍历结果集事务处理conn.commit提交事务;conn.rollback回滚事务;with conn:自动处理提交和回滚3技术概述ORMORM(对象关系映射)将数据库表映射为Python类,将行映射为对象,简化数据库操作常用Python ORM库SQLAlchemy功能全面,支持多种数据库;Django ORM作为Django框架的一部分,易于集成;Peewee轻量简洁,适合小项目使用ORM的优势面向对象编程风格;自动处理SQL转换;数据库无关的代码;内置数据验证和类型转换;更好的安全性(预防SQL注入);数据库迁移工具绘图库趣味入门Turtle基本绘图命令颜色与样式控制交互式应用模块是标准库中的绘图工具,使用设置线条颜色;支持事件处理,可创建交互式程序turtle Pythonpencolorred Turtle特别适合编程初学者导入或设置线条宽度;鼠标点击事件;import turtlepensizewidth onclickfunction基本命令设置填充颜色;键盘事件;from turtleimport*fillcolorblue begin_fill onkeyfunction,key向前移动;向后移和标记填充区域的开始和结束;屏幕点击forwardd backwarddend_fill screen.onscreenclickfunction动;右转;左转;设置绘制速度(最慢,最快,事件基于这些功能,可开发简单游戏如迷rightangle leftanglespeed10110抬笔(移动不画线);无动画)通过循环和条件语句,可以创建宫、赛车或绘图应用通过文penup pendown0turtle.write落笔;移动到坐标绘制几何形状各种复杂的颜色模式和渐变效果,制作迷人的本可添加文本;可gotox,yturtle.shapeturtle的简单代码可生成引人入胜的视觉效果艺术作品改变海龟形状为内置图形或自定义图片常用第三方库推荐网络与爬虫数据处理人性化的客户端,简化requests HTTP文件读写库,支持格式openpyxl Excel网络请求;BeautifulSoup4和公式;文件处理工具;PyPDF2PDF解析器,提取网页数据;HTML/XML图像处理库,继承自;pillow PIL功能强大的爬虫框架,支持大Scrapy文档处理;python-docx Word规模抓取;自动化浏览器操selenium音频文件处理pydub作,处理渲染的页面JavaScript数据科学开发Web科学计算基础,提供高性能数NumPy全能型框架,内置管理后Django Web组对象;数据分析工具,提供pandas台;轻量级框架,灵活简Flask Web结构;绘图库,DataFrame matplotlib洁;现代高性能框架,基FastAPI API创建静态图表;基于seaborn于类型提示;Python SQLAlchemy的统计可视化库;matplotlib scikit-工具包和框架;功能SQL ORMJinja2机器学习库,提供分类、回归等learn强大的模板引擎算法小项目命令行计算器12需求分析实现思路设计一个具有基本算术运算功能的命令行计算解析用户输入的数学表达式,使用eval函数计器,支持加减乘除、括号优先级和输入历史记录算结果,或实现自定义表达式解析器3核心功能表达式计算、历史记录存取、错误处理这个项目实现了一个简单但功能齐全的命令行计算器程序开始时显示欢迎信息和使用说明,进入交互循环接收用户输入当用户输入数学表达式时,程序解析表达式并计算结果;当输入特殊命令如history时,显示计算历史;输入exit或quit退出程序核心代码包括定义Calculator类,包含calculate方法解析表达式并返回结果;add_to_history方法记录历史;show_history方法显示历史记录;主循环处理用户输入,捕获并处理可能的异常为提高安全性,避免直接使用eval,而是实现安全的表达式解析或使用第三方库如simpleeval扩展功能可包括科学计算函数、变量存储、自定义函数定义、保存历史记录到文件等小项目简易贪吃蛇游戏进阶功能扩展核心组件实现添加游戏菜单可选择难度级别(影响蛇移动速度);游戏设计使用tkinter创建游戏界面和Canvas画布;蛇身用列实现游戏暂停和继续;添加高分榜并持久化存储;增贪吃蛇是经典游戏,用Python和tkinter库可轻松实表存储坐标;移动通过更新坐标并重绘实现;碰撞检加音效和背景音乐;添加障碍物增加游戏难度;设计现游戏包含蛇(由连接的方块组成)、食物(随机测判断游戏是否结束;计分系统记录吃到的食物数不同的游戏主题或皮肤这些扩展使简单的贪吃蛇游位置生成的方块)和游戏区域基本规则蛇可以上量主要功能包括初始化游戏状态、处理键盘输戏更加丰富多样下左右移动;吃到食物蛇长度增加;碰到墙壁或自身入、移动蛇身、生成食物、碰撞检测、游戏结束处游戏结束;玩家通过键盘控制方向理这个项目不仅是编程练习,也是学习图形界面、事件驱动编程和游戏逻辑的绝佳机会通过实现贪吃蛇游戏,可以掌握tkinter界面编程、动画原理、碰撞检测算法和游戏状态管理等重要概念完成后,您将得到一个可玩的贪吃蛇游戏,可以自豪地与朋友分享案例演练数据抓取与分析数据抓取数据解析数据清洗数据可视化使用requests获取网页内容用BeautifulSoup提取结构化数据通过pandas整理和转换数据利用matplotlib绘制图表展示结果本项目演示如何抓取豆瓣电影TOP250的数据并进行分析首先使用requests库获取网页内容,模拟浏览器请求头避免被识别为爬虫然后使用BeautifulSoup解析HTML,提取每部电影的标题、评分、年份、导演、主演等信息为处理多页数据,实现翻页功能,抓取所有250部电影信息获取数据后,使用pandas创建DataFrame进行数据清洗和转换处理缺失值;规范化数据类型;提取年份、国家等信息数据分析部分包括计算平均评分;分析不同年代电影数量和评分分布;找出评分最高的导演和类型;按国家/地区分类统计最后,使用matplotlib或seaborn创建可视化图表评分分布直方图;年代与评分关系散点图;国家/地区电影数量柱状图;导演作品数量与平均评分对比图代码调试与测试调试技术与工具单元测试与框架调试是查找和修复代码错误的过程最简单元测试验证代码各个组件是否正确工单的调试方法是print语句,在关键点输作Python标准库unittest模块提供测出变量值更强大的是交互式调试器试框架创建继承unittest.TestCase的Python内置pdb模块(使用类;编写以test_开头的测试方法;使用pdb.set_trace设置断点);IDE集成调断言方法如assertEqual、试器如PyCharm和VS Code提供图形界assertTrue验证结果pytest是更现面,支持断点设置、单步执行、变量监视代的测试框架,语法简洁,功能丰富,支等功能logging模块记录程序运行信持用简单函数编写测试测试驱动开发息,比print更灵活,可设置不同级别的(TDD)先写测试再实现功能,确保代码日志(debug、info、warning、符合预期error、critical)常见与解决策略bug类型错误使用类型提示和类型检查;未定义变量检查拼写和作用域;索引越界验证索引范围;无限循环确保终止条件;逻辑错误分步验证算法;内存泄漏及时释放资源;性能问题使用性能分析工具如cProfile调试建议隔离问题;创建最小重现示例;二分查找定位错误;保持代码简洁明了;定期进行代码审查;使用静态分析工具如pylint、flake8检查代码质量开源资源与社区包管理与资源论坛与交流平台学习与进阶资源PyPI(Python PackageStack Overflow是程序员官方文档是最权威的参考Index)是Python官方的问答网站,有大量Python资料,包括教程、库参考第三方库仓库,包含超过相关问题和答案Python和语言规范Real35万个包通过pip官方邮件列表讨论语言开Python、Python.org、install可安装PyPI上的发和技术问题Reddit的GeeksforGeeks提供高质包GitHub是最大的代码r/Python和量教程Coursera、托管平台,有无数Python r/learnpython子版块有活Udemy、edX等平台有结开源项目,可以学习、贡跃的Python社区国内平构化的Python课程献或基于现有项目开发台如CSDN、知乎、掘金也Python Weekly、Awesome Python是精选有丰富的Python讨论和资ImportPython等通讯定期的Python库和资源列表,源各大Python框架和库分享Python新闻和文章按类别组织,帮助找到高通常有自己的论坛或参加本地Python用户组质量工具Slack/Discord频道(PUG)和全球Python大会如PyCon是结识同行、学习新技术的好方法就业与能力提升建议专业方向选择确定一个专业领域深入发展项目实战积累构建个人作品集展示技能框架与工具掌握3学习行业常用框架和库核心知识Python扎实掌握语言基础Python岗位主要分为几大类Web开发(Django/Flask开发者)、数据分析师、数据科学家、机器学习/AI工程师、自动化测试工程师、DevOps工程师、爬虫工程师等不同岗位要求的技能组合有所不同,建议基于个人兴趣和市场需求选择方向提升竞争力的关键策略建立个人GitHub仓库,展示高质量代码和项目;参与开源项目,积累实际开发经验;撰写技术博客,分享学习心得;获取相关认证如PythonInstitute的认证、AWS或Azure的Python相关认证;参加黑客马拉松和编程竞赛,锻炼解决问题的能力;学习软技能如沟通、团队协作和项目管理推荐学习路线先掌握Python基础,包括语法、数据结构和面向对象编程;然后学习所选方向的关键框架和库;接着通过实际项目应用所学知识;最后持续学习新技术,保持竞争力持之以恒是成功的关键,每天编写代码,解决实际问题,逐步构建专业技能课程总结与答疑基础语法与数据类型掌握Python核心语法和数据结构函数与模块化编程2理解代码组织和重用机制面向对象与高级特性3应用Python强大的编程范式实用库与项目实践4将知识应用到实际开发中恭喜您完成Python编程培训课程!我们已经系统地学习了Python的核心概念和实践技能,从基础语法到高级特性,从内置模块到第三方库,从理论知识到项目实践希望这些内容能够帮助您建立起Python编程的完整知识体系,并为您的学习和工作提供实用工具学习编程是一个持续的过程,不断实践和探索是提升能力的关键建议您选择感兴趣的项目进行实践,遇到问题时查阅文档、搜索解决方案或向社区求助保持好奇心和学习热情,跟进Python社区的最新发展,不断更新自己的知识库我们整理了学习过程中常见的问题和解答如何处理Python2和Python3的兼容性问题?如何有效调试复杂程序?如何优化Python代码性能?如何选择合适的第三方库?这些问题的答案可以在课程资料中找到如有其他疑问,欢迎在讨论区提出或通过邮件联系我们祝您在Python的世界中探索愉快!。
个人认证
优秀文档
获得点赞 0