还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
编程基础Python欢迎来到Python编程基础课程!Python是当今最流行的编程语言之一,因其简洁易读的语法和强大的功能而备受欢迎无论您是编程新手还是有经验的开发者,本课程将帮助您掌握Python的核心概念和实用技能在接下来的课程中,我们将从Python的基础知识开始,逐步深入到更高级的主题您将学习如何编写清晰、高效的Python代码,并通过实战项目巩固所学知识准备好开始您的Python学习之旅了吗?课程简介课程目标通过系统学习和实践,全面掌握Python编程的基础知识和核心概念,能够独立编写Python程序解决实际问题面向人群编程初学者和希望快速掌握Python的学习者,无需具备前置编程经验,只需对计算机和编程有基本兴趣先修要求基本的计算机操作能力,能够进行文件管理、软件安装等日常计算机操作,对逻辑思维有初步认识课程时长全课程跨度16周,共计32学时,每周安排2小时课堂学习和相应的课后实践教学大纲入门阶段Python简介和环境搭建了解Python语言的起源与特点,配置开发环境,熟悉基本工具基础阶段基本语法和数据类型学习变量、数据类型、运算符和表达式等核心概念,为编程打下基础进阶阶段控制结构和函数掌握条件判断、循环结构和函数定义,提高代码的复用性和结构性提高阶段数据结构和模块深入学习列表、字典等数据结构,了解模块化编程方法应用阶段文件操作和异常处理学习文件读写、异常捕获与处理,增强程序的健壮性实战阶段综合项目实践应用所学知识完成实际项目,巩固技能并建立开发信心简介Python诞生背景Python由荷兰程序员Guido vanRossum于1991年创建,最初设计目的是为了提高开发效率和代码可读性语言特点Python是一种高级、解释型、通用的编程语言,强调代码的简洁性和可读性,遵循优雅胜于丑陋的设计哲学行业地位2023年在TIOBE编程语言排行榜中位居第一,成为最受欢迎的编程语言之一,显示其广泛的认可度应用领域Python广泛应用于数据分析、人工智能、机器学习、网站开发、科学计算、自动化测试等各个领域,成为跨领域的技术利器的优势Python简单易学Python的语法清晰直观,接近自然语言,大大降低了编程的学习门槛代码风格强调缩进和简洁性,使得即使是初学者也能快速上手并编写有效的程序跨平台兼容Python程序可以在Windows、macOS、Linux等各种操作系统上运行,无需修改代码,实现了一次编写,到处运行的理念,极大地提高了开发效率丰富的库生态Python拥有庞大的标准库和第三方库资源,涵盖了从数据分析到人工智能的各个领域,使开发者能够站在巨人的肩膀上快速构建应用活跃的社区支持全球范围内有大量的Python开发者和爱好者,形成了活跃的社区生态开发者可以轻松获取学习资源、解决方案和技术支持,加速学习和开发过程开发环境搭建安装Python解释器从Python官网下载并安装最新版本(推荐v
3.10+),注意勾选Add Pythonto PATH选项方便命令行调用选择开发工具根据个人喜好选择适合的开发环境,如专业的PyCharm、轻量的VS Code或集成数据科学工具的Anaconda平台配置Jupyter Notebook学习使用Jupyter Notebook进行交互式编程和实验,特别适合数据分析和教学演示熟悉交互模式掌握Python的命令行交互模式,通过直接在终端运行python命令来测试简单代码片段一个良好的开发环境能够极大提高编程效率和学习体验初学者可以先从简单的工具开始,随着技能提升再逐步尝试更专业的开发环境第一个程序Python经典Hello,World!代码执行流程注释和基本输入输出Python的第一个程序通常是打印Python代码的执行流程包括初学阶段需要掌握的基础知识Hello,World!,这也是编程学习的传
1.编写代码(.py文件)•使用#添加单行注释统起点
2.Python解释器读取代码•使用三引号或添加多行注释
3.解释执行每一行•print函数用于输出内容printHello,World!
4.输出结果到屏幕或文件•input函数用于获取用户输入作为解释型语言,Python无需编译即这行简单的代码展示了Python语言的可直接运行,大大简化了开发过程直观性和简洁性,新手无需理解复杂概念即可运行成功变量与标识符变量命名规则Python变量命名需遵循一定规则以字母或下划线开头,后跟字母、数字或下划线;区分大小写;不能使用关键字良好的命名约定能提高代码可读性,如使用有意义的名称描述变量用途动态类型系统Python采用动态类型系统,变量类型在赋值时自动确定,无需提前声明同一变量可在程序不同阶段引用不同类型的对象,这提供了极大的灵活性,但也要注意潜在的类型错误变量赋值方式变量通过赋值符号=进行赋值,Python支持多重赋值(如a,b=1,2)和链式赋值(如x=y=0)变量实际上是对象的引用,理解这一点对把握Python的内存模型至关重要命名规范与关键字推荐使用snake_case(下划线命名法)为变量命名,类名使用CamelCase(驼峰命名法)了解Python的35个关键字(如if,for,while等)很重要,这些保留字不能用作变量名基本数据类型142整数类型intPython的整数类型可以表示任意大小的整数,不受位数限制,适合进行精确的整数计算和位运算
3.14浮点数类型float用于表示小数,遵循IEEE754标准,需注意浮点数计算可能存在精度问题,不适合需要精确小数计算的金融场景1+2j复数类型complex表示形式为a+bj的复数,其中j表示虚数单位,在科学计算和信号处理领域有重要应用1布尔类型bool仅有True和False两个值,用于逻辑判断,在Python中布尔值也是整数的子类型,True等同于1,False等同于0Python的数字类型之间可以进行灵活转换,通常使用int、float、complex和bool函数进行显式类型转换理解不同数据类型的特性和使用场景是编写高效程序的基础基本数据类型2字符串创建索引和切片使用单引号、双引号或三引号创建字通过位置索引访问单个字符,使用切符串,支持多行文本和转义字符片操作[start:end:step]提取子串格式化技术字符串方法支持多种格式化方式,尤其是f-string内置丰富的字符串处理方法如split、提供了简洁高效的字符串插值能力join、replace、upper等字符串是Python中最常用的数据类型之一,具有不可变性(immutability)特点,即创建后不能修改Python提供了丰富的字符串操作方法,使得文本处理变得简单高效在处理大量文本数据时,了解字符串的各种操作技巧能够显著提高程序性能运算符1运算符类型符号说明示例算术运算符+加法a+b→15算术运算符-减法a-b→5算术运算符*乘法a*b→50算术运算符/除法a/b→
2.0算术运算符//整除a//b→2算术运算符%取余a%b→0算术运算符**幂运算a**b→100000Python的运算符遵循特定的优先级规则,确保表达式按照数学逻辑正确计算一般而言,幂运算优先级最高,其次是正负号,然后是乘除,最后是加减圆括号可以用来更改计算顺序,建议在复杂表达式中使用括号明确计算优先级,提高代码可读性除了基本的算术运算,Python还支持增强赋值运算符(如+=,-=等),可以简化代码编写理解这些运算符的行为和优先级是编写正确程序的基础运算符2逻辑运算符位运算符成员与身份运算符Python中的逻辑运算符用于组合多个条位运算符用于对整数的二进制位进行操成员运算符检查序列中是否包含特定值件作•in如果值在序列中,返回True•and逻辑与,仅当所有条件为True时•按位与,对应位都为1结果才为1•not in如果值不在序列中,返回True结果为True•|按位或,对应位只要有一个为1结果身份运算符检查两个对象是否相同•or逻辑或,只要有一个条件为True,就为1结果就为True•^按位异或,对应位不同结果为1,•is如果两个变量引用同一个对象,返•not逻辑非,取反运算,True变为相同为0回TrueFalse,False变为True•~按位取反,0变1,1变0•is not如果两个变量引用不同对象,返回True逻辑运算符支持短路求值,这意味着一旦•左移,二进制位左移,空位补0能确定结果,就不再继续计算后续表达•右移,二进制位右移,空位补0或1式条件语句1if语句基本结构最简单的条件判断,当条件为True时执行相应代码块if condition:#执行代码块if-else语句二分支结构,根据条件真假选择不同的执行路径if condition:#条件为True时执行else:#条件为False时执行if-elif-else多条件判断多分支结构,可处理多种不同情况if condition1:#条件1为True时执行elif condition2:#条件1为False且条件2为True时执行else:#所有条件都为False时执行条件表达式(三元运算)简洁方式实现条件赋值result=value1if conditionelse value2条件语句2嵌套条件语句在条件语句内部再使用条件语句,用于处理更复杂的逻辑判断和多层次的决策逻辑运算组合条件通过and、or、not等逻辑运算符组合多个条件,创建复杂的判断表达式常见判断模式掌握边界检查、空值处理、类型验证等常见的条件判断模式,提高代码的健壮性简化复杂条件学习分解复杂条件、使用布尔变量和函数封装等技巧,避免过度嵌套和难以理解的条件结构条件语句是程序流程控制的基础,合理使用条件语句可以使程序根据不同情况执行不同的代码路径在实际编程中,应避免过度复杂的条件判断,可以通过拆分逻辑、函数抽象等方式提高代码的可读性和维护性良好的条件语句设计是编写高质量Python程序的关键技能循环语句1while循环基本语法while循环控制流程while循环的基本结构非常简洁while循环的执行流程如下
1.先判断条件表达式的值while condition:
2.如果条件为True,执行循环体#循环体
3.循环体执行完毕后,再次判断条件#更新循环条件
4.重复以上步骤,直到条件为False循环体内部通常需要更新控制条件,否则可能导致只要条件表达式condition的值为True,循环体就会无限循环不断执行,直到条件为False时跳出循环无限循环及应用无限循环是条件永远为True的循环while True:#循环体if exit_condition:break无限循环常用于需要持续运行的程序,如服务器程序、交互式应用等,需配合break语句使用循环语句2for循环基本语法range函数详解循环中的索引控制for循环用于遍历任何可迭代对象range函数用于生成一系列整有时需要同时获取索引和元素(如列表、元组、字符串等),数,是for循环的常用搭配语法简洁明了•rangestop生成[0,stop for index,value in范围的整数enumerateiterable:for itemin iterable:#使用index和value的•rangestart,stop生成#使用item的代码块代码[start,stop范围的整数•rangestart,stop,step指定步长的整数序列这种循环方式是Python最常用的enumerate函数返回索引-值对,循环结构,特别适合处理集合数非常适合需要跟踪位置的场景据多重循环应用循环可以嵌套使用,处理多维数据结构for x inouter_iterable:for yininner_iterable:#使用x和y的代码多重循环在处理矩阵、表格等数据时非常有用,但要注意性能问题循环控制语句break语句continue语句立即终止当前循环,跳出循环体跳过当前循环的剩余语句,进入下一次循环for iin range10:for iin range10:if i==5:if i%2==0:break#到达5时结束循环continue#跳过偶数printi#只会打印0到4printi#只打印奇数pass语句else子句空操作语句,用作占位符循环正常完成时执行未被break中断for iin range10:for iin range5:if i5:printipass#暂不处理小于5的情况else:else:print循环正常完成#正常打印printi#只打印5到9序列类型1列表创建与初始化列表是Python中最灵活的序列类型,可以通过多种方式创建empty_list=[]#空列表numbers=[1,2,3,4,5]#数字列表mixed=[1,hello,
3.14,True]#混合类型列表nested=[1,[2,3],4]#嵌套列表列表索引与切片通过索引访问列表元素,支持正负索引和切片操作first=numbers
[0]#第一个元素last=numbers[-1]#最后一个元素sub_list=numbers[1:4]#子列表[2,3,4]reversed_list=numbers[::-1]#反转列表列表常用方法列表提供了丰富的方法进行元素操作•append添加元素到末尾•insert在指定位置插入元素•remove删除指定元素•pop删除并返回元素•sort列表排序•reverse列表反转列表推导式一种简洁高效的列表创建方式squares=[x**2for xin range10]#平方数列表evens=[x for xin range20if x%2==0]#偶数列表序列类型2元组的特性与创建元组与列表的区别元组解包技术元组是不可变的序列类型,一旦创建就不元组和列表的主要区别元组解包是Python中一种强大的特性能修改•元组是不可变的,列表是可变的coordinate=10,20,30•元组使用圆括号,列表使用方括号[]empty_tuple=x,y,z=coordinate#解包赋single_item=1,#注意单元•元组通常用于表示固定集合,列表用值于可变集合素元组需要逗号coordinates=10,20•元组在某些情况下比列表更高效#交换变量值mixed_tuple=1,hello,a,b=1,2•元组可以作为字典的键,列表不能
3.14a,b=b,a#现在a=2,b=1元组的不可变性使其成为存储固定数据集元组解包使得同时处理多个变量变得简单的理想选择,如坐标点、数据库记录等高效,是Python编程的常用技巧序列类型3字符串切片与拼接高效操作字符串的基本技术字符串格式化技术灵活构建字符串的多种方法字符串常用方法丰富的内置函数满足各种文本处理需求字符编码处理解决多语言文本和国际化问题的基础字符串是Python中最常用的数据类型之一,掌握高级字符串操作对文本处理至关重要Python支持多种字符串格式化方式,包括%运算符、format方法和f-string其中f-string(格式化字符串字面量)是Python
3.6引入的新特性,提供了最简洁直观的字符串格式化方式在处理国际化应用时,理解字符编码问题非常重要Python3默认使用Unicode编码处理字符串,支持全球各种语言文字熟悉ASCII、Unicode和UTF-8等编码标准的区别和关系,有助于解决跨语言文本处理中的各种问题映射类型字典基本概念字典是Python中的映射类型,以键值对形式存储数据,提供高效的查询机制字典是可变的、无序的(Python
3.7+保证插入顺序),键必须是不可变类型(如字符串、数字、元组),值可以是任意Python对象字典的创建与访问创建字典的多种方式empty_dict={}#空字典person={name:张三,age:25}#字面量创建user=dictid=1001,role=admin#使用dict函数通过键访问值person[name]或person.getname,默认值字典的常用方法字典提供了丰富的内置方法•keys返回所有键的视图•values返回所有值的视图•items返回所有键值对的视图•update更新或添加键值对•pop删除指定键并返回对应的值特殊字典类型collections模块提供了多种特殊字典类型•OrderedDict保持键的插入顺序(Python
3.7+普通字典已具备此特性)•defaultdict为不存在的键提供默认值•Counter计数器,用于统计元素出现次数集合类型集合基本特性集合的创建与操作集合运算集合是无序的、可变的、不重复创建集合的方式set函数或使Python集合支持丰富的数学集合元素的集合,类似于数学中的集用花括号{}(但空集必须用set运算并集union,|、交集合概念集合中的元素必须是可创建)基本操作包括添加元素intersection,、差集哈希的(不可变类型),主要用add、删除元素difference,-和对称差集于成员测试、去重和集合运算remove/discard、检查成员关系symmetric_difference,^这些in/not in等集合支持迭代,但操作使得集合成为处理集合关系因无序性,不能通过索引访问元问题的理想工具,如用户权限管素理、数据去重等场景不可变集合frozenset是不可变的集合类型,创建后不能添加或删除元素因其不可变性,frozenset可以作为字典的键或其他集合的元素在需要集合功能但又要求不可变性的场景下,frozenset是理想选择数据结构对比函数基础函数定义函数调用使用def关键字定义函数,指定函数名和通过函数名和括号调用函数,传入所需参参数,通过return返回结果数,接收返回值内置函数文档字符串Python提供大量内置函数如len、在函数体开始添加多行字符串,描述函数range、print等,无需导入即可使用用途、参数和返回值函数是Python程序的基本构建块,是组织代码的主要方式良好的函数设计遵循单一职责原则,即一个函数只做一件事,并做好这件事这种模块化设计使得代码更易于理解、测试和维护在Python中,函数是一等公民first-class citizens,这意味着函数可以赋值给变量、作为参数传递给其他函数、作为返回值返回这种特性使得Python支持函数式编程范式,为代码组织提供了更大的灵活性函数参数1位置参数默认参数关键字参数最基本的参数形式,调用时必须按定义顺序为参数提供默认值,调用时可选调用时通过参数名指定,可不按顺序提供def greetname,message=你好:def create_profilename,age,def greetname,message:return f{message},{name}!city:return f{message},{name}!return{name:name,age:#可以只提供必需参数age,city:city}#调用时必须按顺序提供参数greet张三#使用默认greet张三,你好#正确message=你好#使用关键字参数,顺序可以不同greet你好,张三#顺序错误,greet张三,早上好#覆盖默create_profileage=30,name=李四结果不符预期认值,city=北京注意有默认值的参数必须位于无默认值参数之后了解不同类型的函数参数及其使用规则,是编写灵活、易用函数的基础Python的参数系统设计得非常灵活,同时保持了较强的可读性和安全性在设计函数时,应合理使用不同类型的参数,使函数接口既直观又灵活函数参数2可变位置参数*args可变关键字参数**kwargs接收任意数量的位置参数,在函数内部表现为元组接收任意数量的关键字参数,在函数内部表现为字典def sum_all*numbers:def create_user**user_info:return sumnumbersreturn user_info#可以传入任意数量的参数#可以传入任意键值对sum_all1,2#返回3user=create_username=王五,age=25,city=上海sum_all1,2,3,4,5#返回15#返回{name:王五,age:25,city:上海}*args参数使函数能够处理不确定数量的输入,非常适合需要接收可变数**kwargs参数适用于需要处理不确定键值属性的场景,如配置处理、元量参数的场景数据收集等参数解包技术将序列或映射解包为单独的参数传递给函数def point_distancex1,y1,x2,y2:return x2-x1**2+y2-y1**2**
0.5#位置参数解包point1=0,0point2=3,4distance=point_distance*point1,*point2#
5.0#关键字参数解包config={name:项目A,version:
1.0}create_project**config函数高级特性匿名函数lambda一种简洁的、单行的函数定义方式,适用于简单函数#普通函数def addx,y:return x+y#等效的lambda函数add=lambda x,y:x+y#常用于排序、过滤等操作sortednames,key=lambda x:lenx闭包Closure在函数内定义的函数,可以捕获并记住外部函数的变量def counter:count=0def increment:nonlocal countcount+=1return countreturnincrementmy_counter=countermy_counter#返回1my_counter#返回2装饰器Decorator一种特殊的函数,用于修改其他函数的行为def log_callsfunc:def wrapper*args,**kwargs:printf调用函数:{func.__name__}return func*args,**kwargsreturn wrapper@log_callsdef greetname:return f你好,{name}!作用域和命名空间LEGB规则Python变量查找的顺序规则全局作用域模块级别定义的变量局部作用域函数内部定义的变量global和nonlocal访问和修改外层作用域的变量Python的LEGB规则定义了变量查找的顺序Local(本地作用域)→Enclosing(闭包作用域)→Global(全局作用域)→Built-in(内置作用域)当在代码中引用变量时,Python解释器会按此顺序查找变量定义理解作用域对于避免变量冲突和不必要的副作用至关重要使用global关键字可以在函数内部声明全局变量;使用nonlocal关键字可以在嵌套函数中修改外层函数的变量不过,过度使用这些关键字可能导致代码难以理解和维护,应当谨慎使用模块与包模块的概念模块是包含Python定义和语句的文件,以.py为扩展名模块提供了组织代码的方式,可以将相关功能集中在一起,便于复用和管理每个模块都有自己的命名空间,避免了命名冲突导入机制Python提供多种导入方式#导入整个模块import math#导入特定成员from mathimport sqrt#导入并重命名import numpyas np#导入所有成员不推荐from mathimport*模块搜索路径Python通过sys.path列表查找模块,包括
1.当前目录
2.PYTHONPATH环境变量中的目录
3.Python安装时设定的默认目录创建自定义模块创建自己的模块非常简单,只需编写.py文件并在其中定义函数、类或变量可以在模块中添加__name__==__main__条件判断,使其既可作为模块导入,又可作为脚本直接运行包管理包的概念与结构__init__.py文件的作用相对导入与绝对导入包是一种特殊的模块,以目录形式组织多个__init__.py文件有多种作用Python支持两种导入方式模块包目录必须包含一个__init__.py文件•标识目录是一个Python包(Python
3.3+可选但推荐)典型的包结构#绝对导入(推荐)•初始化包,执行包级别的设置如下from mypackage.subpackage•定义__all__变量控制import*行为import module3my_package/•提供便捷导入路径,如包级函数__init__.py#相对导入(仅在包内使用)空的__init__.py文件也是合法的,仅用于标module
1.py from..subpackage import识包的存在module
2.py module3#上级目录subpackage/from.import module1#当前目录__init__.pymodule
3.py相对导入使用点号表示层次关系,但只能在包内使用,不能在顶级脚本中使用常用标准库1Python标准库是Python安装时自带的功能模块集合,涵盖了从数学计算到网络通信的广泛领域这些库经过精心设计和优化,是日常开发的重要工具熟悉标准库可以避免重新发明轮子,提高开发效率math模块提供数学函数;random模块用于生成伪随机数;datetime处理日期和时间;collections提供特殊容器数据类型;itertools提供高效的迭代器函数这些模块共同构成了Python强大功能的基础,是每个Python开发者应当熟悉的工具集常用标准库2os和sys模块json模块re模块这两个模块提供了与操作系统交互提供处理JSON(JavaScript Object提供正则表达式支持,用于字符串的接口os模块处理文件和目录操Notation)数据的功能,支持搜索和替换主要功能包括模式匹作、进程管理、环境变量等;sys Python数据类型与JSON字符串之间配(match、search)、字符串替模块提供对解释器使用或维护的变的相互转换主要函数有dumps换(sub、subn)、字符串分割量和函数的访问,如命令行参数、(将Python对象转为JSON字符串)(split)等正则表达式是处理文Python路径、标准输入输出等和loads(将JSON字符串解析为本的强大工具,但语法相对复杂,Python对象),在Web开发和API需要专门学习交互中尤为重要logging模块提供灵活的日志记录系统,支持多种日志级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)和输出目的地相比print语句,logging提供更完善的信息记录机制,包括时间戳、源文件信息、格式化等,是开发健壮应用的必备工具第三方库NumPy PandasMatplotlibRequestsNumPy是科学计算的基础库,提供多维数Pandas提供高性能、易用的数据结构和数Matplotlib是Python最流行的数据可视化组对象、向量化运算和广播功能其核心据分析工具核心数据结构包括Series库,支持创建各种静态、动态和交互式图数据结构ndarray比Python原生列表更高(一维数组)和DataFrame(二维表表Requests是一个简单而强大的HTTP效,支持大规模数值计算NumPy广泛应格),支持数据清洗、转换、聚合和可视库,使网络请求变得简单优雅,广泛用于用于数据分析、机器学习和科学研究领化Pandas特别适合处理表格数据,如API调用、网页抓取和数据下载PyQt和域,是许多科学计算库的基础CSV文件、Excel表格和SQL查询结果Tkinter则是流行的GUI开发框架,用于创建桌面应用程序包管理pip基本命令pip是Python的包管理工具,用于安装和管理第三方库最常用的命令包括pip installpackage_name#安装包pip uninstallpackage_name#卸载包pip list#列出已安装的包pip showpackage_name#显示包信息pip searchkeyword#搜索包已弃用需求文件requirements.txt文件用于批量管理依赖包,通常包含包名和版本信息#生成需求文件pip freezerequirements.txt#安装需求文件中的所有包pip install-r requirements.txt虚拟环境虚拟环境用于创建隔离的Python环境,避免依赖冲突#创建虚拟环境python-m venvmyenv#激活虚拟环境#Windows:myenv\Scripts\activate#macOS/Linux:source myenv/bin/activate#退出虚拟环境deactivate文件操作基础文件打开与关闭读取文件内容使用open函数打开文件,操作完成后调用多种读取方法满足不同需求close方法关闭content=file.read#读取全部内file=opendata.txt,r#只容读模式打开line=file.readline#读取一行#文件操作lines=file.readlines#读取所file.close#关闭文件释放资源有行到列表写入文件内容上下文管理器使用写入模式操作文件推荐使用with语句自动管理文件资源file=openoutput.txt,w#with opendata.txt,r as写入模式覆盖file:file.writeHello,World!content=file.read file=openlog.txt,a#追加#文件会自动关闭模式file.writeNew logentry\n文件操作进阶二进制文件处理CSV文件操作处理图像、音频等非文本文件需要使用二进制模式使用csv模块处理逗号分隔值文件#读取二进制文件import csvwithopenimage.jpg,rb as f:data=f.read#读取CSVwith opendata.csv,r asf:#写入二进制文件reader=csv.readerfwith openoutput.bin,wb asf:for rowin reader:f.writebinary_data printrow#写入CSVwith openoutput.csv,w,newline=asf:writer=csv.writerfwriter.writerow[Name,Age]writer.writerow[张三,25]JSON数据处理路径操作使用json模块处理JSON格式数据使用pathlib模块进行跨平台路径操作import jsonfrom pathlibimport Path#读取JSON p=Pathfolder/subfolder/file.txtwith openconfig.json,r asf:p.parent#父目录data=json.loadf p.name#文件名p.suffix#扩展名#写入JSON p.exists#检查是否存在with openoutput.json,w asf:json.dumpdata,f,indent=4异常处理异常的概念异常是程序运行时发生的错误,如果不处理,程序将中止执行Python的异常机制允许优雅地捕获和处理这些错误,增强程序的健壮性常见异常包括TypeError、ValueError、FileNotFoundError等try-except语句使用try-except语句捕获和处理异常try:result=10/0#会引发ZeroDivisionErrorexcept ZeroDivisionError:print除数不能为零result=None多重异常捕获可以通过多个except子句或在一个except中使用元组捕获多种异常try:#可能引发多种异常的代码num=intinput输入数字result=100/numexcept ValueError:print输入必须是数字except ZeroDivisionError:print除数不能为零except TypeError,OverflowError:print发生类型错误或溢出错误else和finally子句完整的异常处理结构try:#尝试执行的代码file=opendata.txt,rexcept FileNotFoundError:#处理特定异常print文件不存在else:#没有异常发生时执行content=file.readfile.closefinally:#无论是否发生异常都执行print操作完成异常进阶raise语句抛出异常在特定条件下主动引发异常异常层次结构2理解内置异常的继承关系自定义异常类创建应用专属的异常类型断言和异常链使用assert进行调试和异常传递Python提供了丰富的异常处理机制,使开发者能够编写更健壮的代码异常在Python中是对象,所有异常都继承自BaseException类,形成一个层次结构了解这一结构有助于正确捕获和处理不同类型的异常自定义异常通过继承Exception类或其子类创建,可以为特定应用设计专门的异常类型raise语句用于主动抛出异常,可以重新抛出当前异常raise或抛出新异常assert语句用于调试时进行断言,条件为假时引发AssertionError异常链则允许在处理一个异常时引发另一个异常,同时保留原始异常信息面向对象编程入门类与对象基本概念类的定义与实例化self参数与构造方法面向对象编程OOP是一种程序设计范式,将数据和行为使用class关键字定义类,使用类名创建实例在Python类方法中,self参数代表实例本身,用于访问实封装到对象中Python是一种多范式语言,完全支持面向例的属性和方法self不是关键字,而是约定俗成的命对象编程名class Person:#类属性•类Class对象的蓝图或模板,定义数据结构和方法__init__是特殊的构造方法,在创建实例时自动调用,用于species=人类初始化实例属性构造方法不返回值,而是初始化新创建•对象Object类的实例,具有类定义的属性和方法的实例•属性Attribute对象的数据#构造方法•方法Method对象可执行的操作def__init__self,name,age:#实例属性self.name=nameself.age=age#实例方法def introduceself:return f我叫{self.name},今年{self.age}岁#创建实例person1=Person张三,25printperson
1.introduce#调用方法面向对象进阶继承与多重继承1子类可以继承父类的属性和方法,实现代码复用Python支持多重继承,一个类可以继承多个父类方法重写与super子类可以重新定义父类的方法,通过super调用父类方法封装与私有属性使用双下划线前缀__attribute创建私有属性,控制属性访问特殊方法与属性装饰器利用__str__、__repr__等特殊方法自定义对象行为,用@property创建受控属性面向对象编程的三大核心概念是封装、继承和多态封装隐藏了对象的内部细节,提供了清晰的接口;继承实现了代码复用和层次结构;多态允许使用统一接口操作不同类型的对象Python的动态特性使得其多态实现非常自然,不需要像Java等静态语言那样的显式接口声明Python的类支持多种特殊方法(魔术方法),如__str__、__repr__、__len__、__getitem__等,允许自定义对象与Python语言结构的交互方式属性装饰器@property提供了一种优雅的方式创建getter和setter方法,使得属性访问更加Pythonic迭代器与生成器迭代协议迭代器是实现了__iter__和__next__方法的对象__iter__返回迭代器自身,__next__返回下一个值或引发StopIteration异常表示迭代结束这种设计使得迭代器可以与for循环和其他迭代上下文(如列表推导式)无缝配合生成器函数生成器是一种特殊的迭代器,使用yield语句而不是return当生成器函数被调用时,它返回一个生成器对象,但函数体不会立即执行每次调用next,函数执行到yield语句,返回值并暂停,下次调用从暂停点继续def countdownn:while n0:yield nn-=1for iin countdown5:printi#输出5,4,3,2,1生成器表达式类似列表推导式,但使用圆括号而不是方括号,创建生成器对象而不是列表#列表推导式立即计算所有值squares_list=[x**2for xin range1000]#生成器表达式按需计算值squares_gen=x**2for xin range1000惰性计算与性能优化生成器实现了惰性计算lazy evaluation,只在需要时计算值,对处理大数据集非常有用与一次性创建完整列表相比,生成器显著减少了内存使用,提高了处理大数据集的效率,同时保持了代码的简洁性上下文管理器with语句工作原理上下文管理器是实现了__enter__和__exit__方法的对象,与with语句配合使用when语句创建了一个运行时上下文,在其中执行代码块,无论是否发生异常,都能确保资源正确释放实现上下文管理器自定义上下文管理器需要实现两个特殊方法class MyContextManager:def__enter__self:#初始化资源print进入上下文return self#返回值赋给as子句变量def__exit__self,exc_type,exc_val,exc_tb:contextlib模块#清理资源print退出上下文contextlib提供了简化上下文管理器创建的工具,尤其是@contextmanager装饰器,它允许使用生成器函数创建上下文管理#返回True可以抑制异常传播器return Falsefromcontextlib importcontextmanagerwith MyContextManageras cm:#在上下文中执行的代码@contextmanager print执行操作def my_context:#进入上下文print进入上下文try:常见应用场景yield#相当于__enter__返回点#正常退出上下文上下文管理器广泛应用于资源管理场景finally:•文件操作自动关闭文件#总是执行的清理代码•数据库连接自动提交或回滚事务print退出上下文with my_context:print执行操作函数式编程高阶函数Python支持函数式编程范式,允许函数作为参数传递和作为返回值返回高阶函数是接受函数作为参数或返回函数的函数Python内置了多个高阶函数•mapfunc,iterable将函数应用于每个元素•filterfunc,iterable筛选满足条件的元素•reducefunc,iterable累积计算结果函数组合与管道函数式编程强调通过组合简单函数创建复杂操作,形成数据处理管道#函数组合示例def composef,g:return lambdax:fgx#创建处理管道process=composestr.upper,composestr.strip,str.lowerresult=process Hello,World!#HELLO,WORLD!推导式进阶Python提供了强大的推导式语法,支持列表、字典、集合#列表推导式squares=[x**2for xin range10]#字典推导式square_dict={x:x**2for xin range5}#集合推导式even_squares={x**2forxin range10if x%2==0}#嵌套推导式matrix=[[i+j forj inrange3]foriinrange3]functools模块functools模块提供了更多高阶函数和工具代码测试与调试单元测试框架断言与调试技术PDB调试器unittest是Python标准库中的单元测试框架,提供了组断言是测试代码正确性的简单方法Python调试器pdb是一个交互式命令行调试工具织和运行测试的工具def calculate_averagenumbers:import pdbimportunittest assertlennumbers0,列表不能为空def complex_function:class returnsumnumbers/lennumbers x=5TestMathFunctionsunittest.TestCase:y=0def test_additionself:pdb.set_trace#设置断点调试技术包括self.assertEqual1+1,2result=x/y#会引发异常•print调试插入临时print语句return resultdeftest_divisionself:•日志记录使用logging模块•交互式调试使用IDE的调试器self.assertRaisesZeroDivisionError,•断点在代码中设置检查点PDB支持单步执行、检查变量、设置断点等功能,对lambda:1/0于复杂程序的调试非常有用if__name__==__main__:unittest.main除了unittest,还有第三方测试框架如pytest,提供更简洁的语法和更丰富的功能性能优化1000x分析工具使用性能分析工具识别瓶颈•cProfile标准库中的性能分析器•line_profiler行级性能分析•memory_profiler内存使用分析20%常见瓶颈Python程序中常见的性能瓶颈•不必要的循环和计算•低效的数据结构选择•过度使用全局变量•I/O操作未优化50%优化技巧常用性能优化技巧•使用适当的数据结构•减少函数调用开销•利用生成器处理大数据•使用内置函数和库•考虑使用NumPy等高性能库100x项目结构组织标准项目布局Python项目的标准目录结构代码风格遵循PEP8编码规范project_name/模块化设计├──LICENSE•使用4个空格缩进├──README.md良好的项目应遵循模块化设计原则•每行最多79个字符├──setup.py•单一职责每个模块只负责一个功能•适当使用空行分隔代码块├──requirements.txt•高内聚低耦合相关功能集中,减少依赖•导入顺序标准库,第三方库,本地模块文档与版本控制├──project_name/•接口清晰提供明确的公共API•命名约定变量小写+下划线,类使用驼峰完善的项目需要良好的文档和版本管理│├──__init__.py•适当的抽象隐藏实现细节命名•编写清晰的README文件│├──core.py│└──helpers.py•使用文档字符串记录代码└──tests/•使用Sphinx生成API文档├──__init__.py•采用Git进行版本控制└──•语义化版本号管理test_core.py3实战项目1命令行工具开发学习使用argparse模块构建命令行接口,创建实用的系统工具实例项目包括批量文件处理器、日志分析工具或简单的任务管理器这类项目帮助理解参数解析、文件操作和系统交互,是实践Python基础知识的理想起点数据分析案例使用Pandas和Matplotlib分析真实数据集,如气象数据、股票价格或公共数据集通过这些项目,您将学习数据清洗、转换、可视化和解释等实用技能,培养数据思维和洞察能力,为进入数据科学领域打下基础网络爬虫与应用开发使用Requests和BeautifulSoup开发网页爬虫,收集和处理网络数据结合Flask或Django框架构建Web应用,创建个人博客或简单的信息管理系统这些项目将帮助您理解HTTP协议、HTML解析和Web开发的基本概念,为构建更复杂的应用做准备实战项目2机器学习入门自动化脚本使用scikit-learn库实现简单的机器学习模型,如线性回归、分类器或聚类算开发自动化脚本解决实际问题,如批量文件重命名、定期备份、邮件发送或网法选择适合初学者的数据集,如鸢尾花分类或房价预测,通过实践了解机器站监控这类项目能够直接提高工作效率,同时锻炼文件操作、网络通信、定学习的基本概念和工作流程,包括数据预处理、模型训练、评估和预测时任务和外部程序调用等技能,体现Python作为胶水语言的优势API交互游戏开发学习与常见Web API交互,如天气服务、社交媒体或开放数据平台实现数据获使用Pygame库开发简单的2D游戏,如贪吃蛇、俄罗斯方块或简单射击游戏游取、解析和存储,创建基于API的应用程序通过这些项目,您将熟悉REST API戏开发是学习编程概念的有趣方式,涉及图形渲染、用户输入处理、碰撞检测的概念、JSON数据处理和OAuth认证等技术,为开发更复杂的网络应用奠定基和游戏循环等知识,能够综合运用Python的多种特性,提供直观的学习反馈础学习资源与社区持续学习是掌握Python的关键官方文档(docs.python.org)是最权威的参考资源,包含完整的语言规范和库文档推荐的入门书籍包括《Python编程从入门到实践》、《流畅的Python》和《Python Cookbook》,它们分别适合不同层次的学习者在线学习平台如Coursera、edX和DataCamp提供结构化的Python课程Stack Overflow是解决编程问题的最佳社区,而GitHub上有无数的开源项目可供学习和贡献加入Python UserGroup(PUG)、参加PyCon等技术会议,以及关注Reddit的r/Python和r/learnpython社区,都是拓展知识网络和获取最新资讯的好方法课程总结与展望持续学习与实践编程能力需要不断练习与更新专业化方向选择感兴趣的领域深入发展项目驱动学习3通过实际项目巩固和扩展知识构建知识体系将各部分知识整合成完整框架恭喜您完成Python编程基础课程!通过这个课程,您已经掌握了Python的核心概念,包括基本语法、数据类型、控制结构、函数、面向对象编程和常用库等这些知识为您在Python领域的进一步探索奠定了坚实的基础Python的应用领域非常广泛,您可以选择多种专业化方向数据科学与机器学习、Web开发、自动化与脚本编程、游戏开发或网络安全等无论选择哪个方向,持续学习和实践都是提高的关键建议通过参与开源项目、解决实际问题和学习高级主题来深化技能记住,编程是一段终身学习的旅程,每一步都会让您成长为更优秀的开发者。
个人认证
优秀文档
获得点赞 0