还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
编程基础Python欢迎来到《Python编程基础》课程!本课程是为初学者设计的全面入门指南,涵盖Python
3.x编程语言的各个方面无论您是编程新手还是有其他语言经验的开发者,本课程都将帮助您掌握Python的核心概念我们将通过丰富的实例代码和精心设计的练习,带您从基础概念逐步进阶到实际应用开发Python作为当今最流行的编程语言之一,学习它将为您打开通往数据科学、人工智能、网站开发等众多领域的大门课程概述基础入门掌握Python语法基础、数据类型和基本编程结构进阶知识学习函数、模块、文件操作和面向对象编程实际应用开发命令行、数据分析、网络爬虫和Web应用等项目成果展示通过50节精心设计的课程内容,最终能够独立开发Python程序简介Python创立背景Python创建于1991年,由荷兰程序员Guido vanRossum开发最初的设计目标是创造一门易于学习且功能强大的编程语言语言特点作为一种高级、解释型、通用编程语言,Python以其简洁的语法和代码可读性著称,遵循优雅胜于丑陋,明确胜于隐晦的设计哲学全球影响如今,Python拥有超过830万的全球开发者社区,是GitHub上最活跃的编程语言之一,广泛应用于网络开发、科学计算、人工智能等领域为什么学习?Python入门友好应用广泛Python语法简洁明了,接近自然从数据分析、人工智能、Web开语言,降低了学习曲线与其他发到自动化脚本、科学计算,编程语言相比,初学者通常能更Python几乎无处不在掌握快上手并编写有用的程序Python意味着可以在多个领域发展就业前景Python开发者在全球就业市场上需求量大,薪资水平平均比其他语言高15-20%许多顶级科技公司都在大量招聘Python人才开发环境搭建安装解释器Python从Python官网下载最新的稳定版本安装包,按照指引完成安装确保将Python添加到系统环境变量中,以便在命令行中直接调用选择合适的IDE根据个人需求选择集成开发环境,如专业开发推荐PyCharm,轻量级选择可以使用Visual Studio Code,数据分析首选JupyterNotebook熟悉命令行基础学习基本的命令行操作,包括目录导航、文件操作等掌握如何通过命令行运行Python程序,这是进行Python开发的基础技能解释器安装Python从python.org官网下载最新版本的Python解释器是开始Python编程之旅的第一步网站会根据您的操作系统自动推荐适合的版本,通常建议选择最新的稳定版本对于Windows用户,安装过程中务必勾选Add Pythonto PATH选项,这将使您能够从命令行直接运行PythonmacOS和Linux用户可能需要额外的配置步骤来确保环境变量正确设置安装完成后,可以通过在命令行中输入python--version或python3--version来验证安装是否成功如果显示Python版本号,则表示安装成功常用介绍IDEPyCharm VisualStudioCodeJupyter Notebook由JetBrains开发的专业Python IDE,分为微软开发的轻量级但功能强大的编辑器,基于网页的交互式计算环境,允许您在文专业版付费和社区版免费提供智能代通过安装Python扩展可获得出色的Python档中嵌入代码、可视化和说明特别适合码补全、高级调试工具、版本控制集成等开发体验启动快速,高度可定制,支持数据分析和科学计算,能够逐块运行代码功能适合专业开发者和大型项目多种编程语言,是入门学习的绝佳选择并立即查看结果第一个程序Python代码示例运行程序的方法
1.通过IDE运行点击编辑器中的运行按钮#我的第一个Python程序
2.命令行运行python hello.pyprint你好,世界!print欢迎学习Python编程
3.交互式环境直接在Python解释器中输入代码无论使用哪种方法,当程序成功运行后,您将在屏幕上看到输出#简单的数学运算结果这意味着您的Python编程之旅已经正式启程!result=5+3print5+3=,result语法基础Python变量和赋值注释的使用Python中变量无需声明数据类型,直接单行注释使用#号,多行注释使用三个赋值即可使用例如name=张
三、单引号或三个双引号包围age=25基本代码结构代码缩进Python代码由表达式、语句、函数和类Python使用缩进表示代码块,而不是大等组成,形成清晰的结构化程序括号缩进不一致会导致语法错误变量和数据类型概述动态类型系统Python是动态类型语言,变量的类型在运行时确定,同一变量可以重新赋值为不同类型这带来了极大的灵活性,但也要求开发者更加注意类型管理基本数据类型Python内置了丰富的数据类型数字整数、浮点数、复数、字符串、列表、元组、字典、集合等每种类型都有其特定的用途和操作方法类型检查使用type函数可以查看变量的类型,例如type42返回class int这对于调试和理解代码行为非常有用变量命名规则变量名必须以字母或下划线开头,后跟字母、数字或下划线Python区分大小写,建议使用小写字母和下划线命名变量snake_case数字类型类型描述示例特点整数int表示没有小数部42,-7,0精度不受限制,分的数字可表示任意大的整数浮点数float带小数点的实数
3.14,-
0.001,2e-有精度限制,可3能存在浮点误差复数complex包含实部和虚部3+4j,2-1j支持科学和工程计算Python支持所有标准的数学运算符,包括加+、减-、乘*、除/、整除//、取余%和幂运算**运算符优先级遵循数学规则,可以使用括号改变计算顺序Python的数字处理非常灵活,整数运算可以产生任意精度的结果,不会发生溢出math模块提供了更多高级数学函数,如三角函数、对数和常数等字符串类型字符串声明转义字符字符串索引和切片•\n-换行符#单引号字符串text=Python编程•\t-制表符name=张三#索引(从0开始)•\-单引号printtext
[0]#输出:P#双引号字符串•\-双引号printtext[-1]#输出:程message=你好,世界•\\-反斜杠#切片[起始:结束:步长]#三引号多行字符串可以使用r前缀创建原始字符串,如printtext[0:6]#输出:description=这是一个rC:\path\to\file,其中转义字符不会被Python多行字符串示例,处理printtext[6:]#输出:编程可以包含多行内容字符串操作方法连接和重复使用+运算符连接字符串,使用*运算符重复字符串基本方法包括len获取长度,upper转大写,lower转小写查找和替换find查找子串位置,replace替换子串分割和合并split分割字符串为列表,join将列表合并为字符串字符串是Python中最常用的数据类型之一,掌握这些操作方法可以大大提高文本处理的效率Python字符串是不可变的,这意味着所有的字符串操作都会返回一个新的字符串,而不是修改原字符串列表类型列表创建和访问列表切片和操作列表用方括号[]创建,可包含不同类型的元素通过索引访问元切片语法[start:end:step]可获取子列表列表支持+(连接)和素,如fruits
[0]获取第一个元素索引从0开始,负索引表示从*(重复)操作例如numbers[1:4]获取索引1到3的元素,末尾开始计数(-1表示最后一个元素)list1+list2连接两个列表嵌套列表列表推导式列表可以包含其他列表,形成多维数据结构访问嵌套元素使一种简洁创建列表的方式,形如[expression for item initerable用多层索引,如matrix
[0]
[1]访问第一行第二列的元素嵌套列if condition]例如[x**2for xin range10if x%2==0]创建偶表常用于表示矩阵和复杂数据数平方列表列表方法详解添加元素append,extend,insert删除元素remove,pop,clear查找信息index,count排序和反转sort,reversePython列表提供了丰富的内置方法,使得对列表的操作非常便捷添加元素方法中,append在列表末尾添加单个元素,extend添加另一个列表中的所有元素,insert在指定位置插入元素删除元素时,remove删除指定值的第一个匹配项,pop删除并返回指定索引的元素(默认为最后一个),clear清空整个列表查找方法index返回值的首次出现索引,count计算值出现的次数排序方法sort可以按升序或降序(reverse=True)排列列表,reverse方法将列表元素顺序颠倒掌握这些方法可以灵活高效地处理列表数据元组类型元组基础元组列表vs#创建元组特性元组列表empty_tuple=可变性不可变可变single_item=1,#注意逗号coordinates=10,20语法[]mixed=1,hello,
3.14性能较快较慢#访问元素printcoordinates
[0]#输出:10方法数量较少较多printmixed[-1]#输出:
3.14元组的不可变性意味着一旦创建,就不能添加、删除或修改元素这种特性使元组成为存储固定数据集的理想选择,例如坐标点、RGB颜色值或数据库记录元组的应用场景包括作为字典的键(列表不能用作键)、函数返回多个值(实际上是返回一个元组)、保护数据不被修改、提高程序执行效率等虽然元组本身不可变,但如果元组包含可变对象(如列表),这些对象的内容仍然可以修改字典类型键值对概念创建和访问常用方法字典是由键值对组成的无序使用花括号{}或dict创建字getkey,default安全获取集合,每个键与一个值相关典,通过键访问值例如值,update更新或添加条联键必须是不可变类型person={name:李明,目,keys、values和(如字符串、数字或元age:30},访问items分别获取键、值和键组),值可以是任何类型person[name]值对字典推导式形如{key:value for item initerable}的简洁语法,例如{x:x**2for xin range5}创建平方映射表字典是Python中最强大的数据结构之一,特别适合表示具有属性的对象或需要快速查找的数据集由于使用哈希表实现,字典的查询操作非常高效,时间复杂度为O1集合类型集合特性创建和使用无序、不重复元素的集合使用花括号{}或set创建•元素必须是不可变类型•fruits={苹果,香蕉,橙子}•自动删除重复项•numbers=set[1,2,3,2]#结果为{1,2,3}•内部使用哈希实现,查找高效•使用in检查元素是否存在常用方法集合运算修改集合的操作支持数学集合操作•add添加元素•并集A|B或A.unionB4•remove删除元素不存在则报错•交集AB或A.intersectionB•discard删除元素不存在不报错•差集A-B或A.differenceB•clear清空集合•对称差A^B或A.symmetric_differenceB集合类型在需要处理唯一元素集合或需要进行集合运算时特别有用例如,可以用于去除列表中的重复项、查找共同元素或独有元素等场景运算符算术运算符•+加法x+y•-减法x-y•*乘法x*y•/除法(返回浮点数)x/y•//整除(向下取整)x//y•%取余x%y•**幂运算x**y x的y次方比较运算符•==等于x==y•!=不等于x!=y•大于xy•小于xy•=大于等于x=y•=小于等于x=y逻辑运算符•and逻辑与x andy•or逻辑或x ory•not逻辑非not x赋值运算符•=简单赋值x=5•+=加法赋值x+=3等同于x=x+3•-=减法赋值x-=3等同于x=x-3•*=,/=,//=,%=,**=类似条件语句语句基础语法结构多条件判断if if-else if-elif-elseif条件:if条件:if条件1:#条件为True时执行的代码#条件为True时执行#条件1为True时执行语句
1......语句2else:elif条件2:...#条件为False时执行#条件1为False且条件2为True时执行......elif条件3:条件可以是任何返回布尔值的表达式Python将#条件1和2为False且条件3为True时执行非零数值、非空字符串、列表、元组、字典等视if-else结构提供了二分支选择,当条件为真时执为True,零值、None、空字符串等视为False行一组语句,为假时执行另一组语句这是最基...本的条件执行控制方式else:#所有条件都为False时执行...Python的条件语句还支持三元表达式,形式为value_if_true ifcondition elsevalue_if_false例如message=成年if age=18else未成年这提供了一种简洁的条件赋值方式循环结构循环while基础语法while条件:#条件为True时重复执行的代码块语句1语句
2...无限循环与breakwhile True:#无限执行,除非遇到break语句if某条件:break#跳出循环语句continuewhile条件:#循环体开始if某条件:continue#跳过本次迭代,继续下一次#continue后的代码在某条件为True时不执行结构while-elsewhile条件:#循环体...else:#当循环条件为False时执行#如果循环被break终止,则不执行while循环在满足特定条件时重复执行代码块,直到条件变为False或遇到break语句这种循环特别适用于不知道确切迭代次数的场景,例如处理用户输入、等待某个条件满足等情况循环结构循环for基础语法for变量in可迭代对象:#循环体...Python的for循环实际上是一个for-each循环,它遍历可迭代对象中的每个元素,将元素赋值给变量,然后执行循环体可迭代对象包括列表、元组、字符串、集合、字典等range函数详解#rangestop-从0到stop-1foriin range5:#0,1,2,3,4printi#rangestart,stop-从start到stop-1foriin range2,5:#2,3,4printi#rangestart,stop,step-步长为stepfor iin range0,10,2:#0,2,4,6,8printi遍历各种数据结构#遍历列表fruits=[苹果,香蕉,橙子]for fruitin fruits:printfruit#遍历字典person={name:张三,age:30}for keyin person:#遍历键printkey,person[key]for key,value inperson.items:#遍历键值对printkey,value#遍历字符串for charin Python:printchar循环控制语句语句break continue立即终止当前循环,并跳出循环体在嵌套循环中,break只会跳出最内跳过当前迭代中剩余的代码,并继续下一次迭代这在需要跳过某些特定层的循环常用于找到第一个匹配项后停止搜索,或者在用户输入特定值值的处理时非常有用,例如忽略列表中的负数或空字符串时终止程序语句嵌套循环pass作为占位符,表示什么都不做当语法需要一个语句但您不想执行任何循环内部包含另一个循环的结构内循环对于外循环的每次迭代都会完整操作时使用例如,在定义空函数或类,或者作为尚未实现代码的临时替执行一次常用于处理二维数据结构、矩阵运算或需要多重条件组合的场代景掌握循环控制语句可以让您的代码更加灵活高效例如,在大型数据集中寻找特定条件的元素时,一旦找到可以使用break立即退出;当处理包含可能无效数据的列表时,可以用continue跳过这些项目函数基础函数的定义和调用参数和返回值使用def关键字定义函数,括号内指定参数,通过函数名加括号调函数可接受零个或多个参数,使用return语句返回结果(可选)用函数文档字符串变量作用域三引号字符串作为函数的第一个语句,提供函数的描述和用法说全局变量在整个程序中可访问,局部变量只在函数内部可用明函数是Python程序的基本构建块,它们将代码组织成可重用的逻辑单元良好设计的函数应该只完成一项特定任务,这使得代码更易于理解、测试和维护一个典型的函数定义如下def greetname:向指定的人打招呼return f你好,{name}!#调用函数message=greet李明printmessage#输出:你好,李明!函数参数详解位置参数最基本的参数形式,调用时必须按照定义的顺序提供对应数量的参数def addx,y:return x+yresult=add5,3#x=5,y=3默认参数为参数指定默认值,调用时可以省略这些参数def greetname,greeting=你好:return f{greeting},{name}!printgreet小明#使用默认问候语printgreet小红,早上好#自定义问候语关键字参数调用时通过参数名指定,可以不按顺序def person_infoname,age,city:return f{name},{age}岁,来自{city}printperson_infoage=25,city=北京,name=王伟可变参数接收任意数量的参数,*args收集位置参数,**kwargs收集关键字参数def summarize*args,**kwargs:printf位置参数:{args}printf关键字参数:{kwargs}summarize1,2,3,name=Python,year=2023匿名函数Lambda函数语法配合内置函数使用Lambda#基本语法#与map一起使用lambda参数:表达式numbers=[1,2,3,4,5]squares=listmaplambda x:x**2,numbers#示例计算平方printsquares#输出:[1,4,9,16,25]square=lambda x:x**2printsquare5#输出:25#与filter一起使用even_nums=listfilterlambda x:x%2==0,numbers#多参数示例printeven_nums#输出:[2,4]sum_func=lambda x,y:x+yprintsum_func3,4#输出:7#与sorted一起使用students=[张三,85,李四,92,王五,78]sorted_by_score=sortedstudents,key=lambda s:s
[1],reverse=Trueprintsorted_by_score#按分数降序排列Lambda函数是一种小型匿名函数,只能包含一个表达式它们主要用于需要函数对象作为参数的场景,尤其是当这个函数逻辑非常简单的时候Lambda函数的优点是代码简洁,无需额外定义函数,缺点是功能有限,不能包含多条语句,也不适合复杂逻辑在函数式编程中,lambda函数与map,filter和reduce等高阶函数结合使用,可以简洁地处理序列数据不过对于复杂操作,使用列表推导式或生成器表达式可能比lambda函数更清晰易读模块和包模块的概念和导入1模块是包含Python定义和语句的文件,通过import语句导入创建自定义模块编写.py文件,定义变量、函数和类,供其他程序导入使用包的结构和用途包是包含多个模块的目录,必须有__init__.py文件和__name____main__用于区分模块被导入还是直接运行的机制模块化是Python程序设计的核心理念之一,它使代码组织更加结构化,便于维护和重用当导入模块时,可以使用不同的语法import module_name导入整个模块,from module_name importspecific_item只导入特定项,以及as关键字创建别名创建自己的包时,需要建立合理的目录结构,并在每个目录中包含__init__.py文件(Python
3.3+可以省略,但保留它是好的做法)包的命名应遵循Python标准,通常使用小写字母,避免使用下划线常用标准库和模块模块模块os sysdatetime math提供与操作系统交互的功提供处理日期和时间的类和提供数学常数和函数,如能,包括文件路径操作、进函数,包括日期算术、格式π、e、三角函数、对数函程管理、环境变量访问等化和解析、时区处理等这数、幂函数等该模块为复sys模块则提供对解释器相个模块对于需要处理时间杂的数学计算提供了基础支关的变量和函数的访问,如戳、计算时间差或格式化日持,适用于科学计算和工程命令行参数、Python版本信期显示的应用非常有用应用息等模块random提供生成伪随机数的工具,包括随机选择、随机排序和随机分布等功能这个模块在模拟、游戏开发、统计采样等场景中非常有用Python标准库是Python安装包自带的一组模块和包,无需额外安装即可使用这些库提供了丰富的功能,涵盖文件I/O、数据结构、网络通信、并发执行、数据压缩、数学计算等多个领域,大大减少了开发者的工作量文件操作基础打开和关闭文件#基本语法file=openfilename,mode#操作文件...file.close#模式选择#r:读取(默认)#w:写入(覆盖已有内容)#a:追加#b:二进制模式#+:读写模式读取文件内容#读取全部内容with openexample.txt,r as file:content=file.read#按行读取with openexample.txt,r as file:lines=file.readlines#返回行列表#逐行读取with openexample.txt,r as file:for linein file:printline.strip#去除行尾换行符写入和追加内容#写入文件(覆盖已有内容)with openoutput.txt,w as file:file.write第一行内容\nfile.write第二行内容\n#追加内容with openoutput.txt,a as file:file.write追加的内容\n文本文件处理读取大型文件技巧文件迭代器处理文件CSV处理大文件时,避免一次性读取全部内容,而应使用Python文件对象本身就是迭代器,可以直接在循环中使用csv模块可以轻松处理CSV格式数据迭代方式或分块读取使用import csv#逐行处理(内存友好)#文件对象作为迭代器with openlarge_file.txt,r astotal_lines=sum1for linein#读取CSVfile:opendata.txt with opendata.csv,r,newline=for linein file:printf文件共有{total_lines}行asfile:processline reader=csv.readerfile#使用fileinput模块处理多个文件for rowin reader:#分块读取import fileinputprintrow#row是列表with openlarge_file.txt,r asfor lineinfile:fileinput.input[file
1.txt,#写入CSVchunk=file.read1024#每次读取file
2.txt]:with openoutput.csv,w,1KB printf{fileinput.filename}:newline=asfile:while chunk:{line}writer=csv.writerfileprocesschunk writer.writerow[姓名,年龄,chunk=file.read1024城市]writer.writerow[张三,25,北京处理文本文件时,编码问题经常出现,特别是处理包含非ASCII字符的文件Python默认使用UTF-8编码,但有时需要指定其他编]码例如withopenfile.txt,r,encoding=gbkas f:遇到编码错误时,可以使用errors参数指定处理方式,如errors=ignore忽略无法解码的字符异常处理基础结构try-except捕获并处理程序运行时的错误多个块except针对不同类型的异常采取不同的处理方式和子句finally else无论是否发生异常都执行的代码和仅在无异常时执行的代码自定义异常创建特定于应用程序的异常类型Python的异常处理机制允许程序优雅地应对运行时错误,而不是突然崩溃try块包含可能引发异常的代码,except块捕获并处理特定类型的异常finally块无论是否发生异常都会执行,通常用于清理资源;else块仅在未发生异常时执行,可以放置那些在成功情况下需要执行的代码try:x=intinput请输入一个数字:result=10/xprintf10/{x}={result}except ValueError:print输入无效,请输入一个数字except ZeroDivisionError:print错误除数不能为零else:print计算成功完成!finally:print异常处理结束自定义异常通过继承Exception类(或其子类)来创建,使代码能够抛出和捕获特定于应用的错误条件,提高了代码的可读性和可维护性面向对象编程类和对象类的定义和实例化参数的作用selfPython类的每个实例方法的第一个参数必须是self,它代表实例本身通过self可以访问实例的属#定义一个简单的类性和其他方法class Person:#类变量当我们调用方法时(如person
1.introduce),Python会自动将实例作为第一个参数传递,因此不species=人类需要在方法调用中显式指定selfself不是Python的关键字,理论上可以使用其他名称,但使用self是约定俗成的做法,能提高代码#构造函数可读性def__init__self,name,age:#实例变量Python面向对象编程的核心理念是封装、继承和多态类提供了一种将数据和行为组织在一起的方self.name=name式,使代码更加模块化和可维护self.age=age#实例方法def introduceself:return f我叫{self.name},今年{self.age}岁#创建类的实例person1=Person张三,25person2=Person李四,30#访问属性和调用方法printperson
1.name#输出:张三printperson
1.introduce#输出:我叫张三,今年25岁类的继承和多态继承的基本概念子类继承父类的属性和方法,通过继承实现代码重用class Animal:def speakself:passclass DogAnimal:#Dog继承Animaldef speakself:return汪汪!方法重写子类可以重新定义从父类继承的方法,提供特定于子类的实现class BirdAnimal:def speakself:return啾啾!def flyself:return鸟儿在飞翔!多层继承类可以继承已经继承其他类的类,形成继承链class SparrowBird:#Sparrow继承Bird,Bird继承Animaldef speakself:return喳喳!高级类特性Python的高级类特性让面向对象编程更加强大和灵活类方法@classmethod使用cls参数而非self,操作类本身而不是实例,常用于创建替代构造函数静态方法@staticmethod不需要访问类或实例,但逻辑上属于类的命名空间,适合将辅助函数组织在相关类中属性装饰器@property将方法转换为属性访问语法,实现受控访问,同时保持简洁的接口特殊方法(双下划线方法,如__str__、__repr__、__eq__等)允许自定义类实例在各种操作中的行为,如字符串表示、比较、数学运算等抽象基类ABC通过abc模块实现,定义必须由子类实现的方法,提供接口规范元类metaclass控制类的创建过程,是高级用户用于框架开发的强大工具这些高级特性使Python的OOP系统既简单直观又功能完备正则表达式基本语法和模式正则表达式是描述字符串模式的特殊语法基本元素包括普通字符(如a匹配字符a)和元字符(如.匹配任意字符,*表示前一个字符重复零次或多次)常用模式有\d匹配数字,\w匹配字母数字,\s匹配空白字符等模块的使用rePython通过re模块提供正则表达式支持使用前需导入import re正则表达式可以编译后重用pattern=re.compiler\d+,这在重复使用同一正则时更高效r前缀创建原始字符串,避免反斜杠转义问题常用函数re.searchpattern,string查找第一个匹配项;re.matchpattern,string只在字符串开头匹配;re.findallpattern,string查找所有匹配项并返回列表;re.subpattern,replacement,string替换匹配项这些函数简化了文本处理任务分组和替换使用创建捕获组,可以提取匹配文本的特定部分使用\
1、\2等后向引用访问之前的组命名组Ppattern提供了更清晰的引用方式分组是处理复杂文本格式的强大工具正则表达式是文本处理的强大工具,但也易于写出效率低下或难以维护的复杂表达式建议遵循简单优先原则,并为复杂正则添加详细注释对性能要求高的场景,考虑使用编译正则和非贪婪匹配(如*而非*)数据处理JSON格式简介中的处理JSON PythonJSONJSONJavaScript ObjectNotation是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析和生成import json它基于JavaScript语法,但是独立于编程语言JSON数据结构包括#Python对象转JSON字符串(序列化)data={•对象无序的键/值对集合,用花括号{}表示name:张三,•数组有序的值的集合,用方括号[]表示age:30,•值可以是字符串、数字、对象、数组、布尔值或null skills:[Python,JavaScript,SQL],is_active:True}json_str=json.dumpsdata,ensure_ascii=False,indent=4printjson_str#写入JSON文件with opendata.json,w,encoding=utf-8asf:json.dumpdata,f,ensure_ascii=False,indent=4#JSON字符串转Python对象(反序列化)parsed_data=json.loadsjson_strprintparsed_data[name]#输出:张三#从JSON文件读取withopendata.json,r,encoding=utf-8asf:loaded_data=json.loadfPython与JSON之间的类型对应关系dict对应对象,list/tuple对应数组,str对应字符串,int/float对应数字,True/False对应布尔值,None对应null处理复杂JSON时,可能需要使用自定义解码器/编码器json.JSONDecoder/json.JSONEncoder来处理特殊类型,如日期时间、自定义对象等日期和时间处理模块详解日期格式化和解析时区处理datetimeimport datetime#格式化日期时间转字符串from datetimeimport datetimeformatted=now.strftime%Y-%m-%d importpytz#需要额外安装#主要类%H:%M:%Stoday=datetime.date.today#当前日期printformatted#如:2023-10-01#创建带时区的时间now=datetime.datetime.now#当前日期和14:30:00utc_now=datetime.nowpytz.UTC时间printutc_now#显示UTC时间time=datetime.time13,30,0#特定时间#解析字符串转日期时间date_string=2023-10-0114:30:00#时区转换#创建日期和时间parsed_date=datetime.datetime.strptime beijing_tz=pytz.timezoneAsia/Shanghaispecific_date=datetime.date2023,10,1date_string,%Y-%m-%d%H:%M:%S beijing_now=specific_datetime=datetime.datetime2023,utc_now.astimezonebeijing_tz10,1,14,30,0#常用格式代码printbeijing_now#显示北京时间#%Y:四位年份,%m:月份,%d:日#时间差#%H:24小时制小时,%M:分钟,%S:秒#查看可用时区delta=datetime.timedeltadays=7,hours=3#%A:星期,%B:月份名称all_timezones=pytz.all_timezonesfuture_date=now+delta#7天3小时后Python的日期和时间处理功能强大,除了标准库外,处理复杂时区问题时可能需要使用pytz库在处理涉及多个时区的应用时,建议统一使用UTC时间进行存储,只在显示时转换为本地时区另外,对于需要复杂日期计算的场景,可以考虑使用dateutil等第三方库扩展功能网络编程基础HTTP请求基础HTTP超文本传输协议是Web的基础,定义了客户端和服务器之间数据传输的格式和规则主要请求方法包括GET获取资源、POST提交数据、PUT更新资源、DELETE删除资源等requests库入门import requests#发送GET请求response=requests.gethttps://api.example.com/dataprintresponse.status_code#HTTP状态码printresponse.text#响应内容printresponse.json#解析JSON响应#带参数的GET请求API调用示例params={key1:value1,key2:value2}response=requests.gethttps://api.example.com/search,#调用公共API示例params=paramsapi_url=https://api.openweathermap.org/data/
2.5/weather#发送POST请求params={q:北京,中国,data={username:user,password:pass}appid:YOUR_API_KEY,#需要注册获取response=requests.posthttps://api.example.com/login,units:metric#摄氏度data=data}response=requests.getapi_url,params=params网页内容获取和解析if response.status_code==200:weather_data=response.jsontemp=weather_data[main][temp]import requestsdescription=weather_data[weather]
[0][description]from bs4import BeautifulSoup#需要安装beautifulsoup4printf北京当前温度:{temp}°C,天气:{description}else:url=https://example.comprintf请求失败,状态码:{response.status_code}response=requests.geturlsoup=BeautifulSoupresponse.text,html.parser#提取标题title=soup.title.textprintf页面标题:{title}#查找所有链接links=soup.find_allafor linkin links:printlink.gethref数据可视化入门项目命令行应用需求分析和设计确定应用功能和用户交互流程例如,创建一个文件管理工具,可以批量重命名文件、查找特定文件或统计文件夹信息设计命令行参数结构,规划各个功能模块,并考虑错误处理和用户体验参数解析import argparsedefmain:#创建参数解析器parser=argparse.ArgumentParserdescription=文件管理工具#添加命令行参数parser.add_argument-r,--rename,action=store_true,help=批量重命名文件parser.add_argument-f,--find,type=str,help=查找包含特定名称的文件parser.add_argument-s,--stats,action=store_true,help=显示文件夹统计信息parser.add_argumentpath,type=str,help=目标文件夹路径#解析参数args=parser.parse_args#根据参数执行不同功能if args.rename:rename_filesargs.pathelif args.find:find_filesargs.path,args.findelif args.stats:show_statsargs.pathelse:parser.print_helpif__name__==__main__:main实现功能模块项目数据分析项目爬虫Web爬虫伦理和规则获取网页内容解析HTML提取数据存储和处理数据遵守robots.txt,控制请求频率,尊重版权使用requests库发送HTTP请求获取页面用BeautifulSoup定位和提取所需信息保存为CSV、JSON或数据库,进一步分析Web爬虫是Python广泛应用的领域之一,用于自动收集网络数据在实际操作中,首先要确保合法合规,尊重网站的使用条款许多网站通过robots.txt文件指定爬虫规则,我们应当严格遵守,并控制请求频率避免对服务器造成负担import requestsfrombs4import BeautifulSoupimportcsvimport timedefscrape_books:#目标网站url=http://books.toscrape.com/catalogue/category/books/science_22/index.htmlresponse=requests.geturlsoup=BeautifulSoupresponse.text,html.parser#提取图书信息books=[]for bookin soup.selectarticle.product_pod:title=book.h
3.a[title]price=book.select_one.price_color.textrating=book.select_onep.star-rating[class]
[1]books.append[title,price,rating]#保存到CSVwith openscience_books.csv,w,newline=,encoding=utf-8asf:writer=csv.writerfwriter.writerow[Title,Price,Rating]writer.writerowsbooksreturn books#执行爬虫,并添加延迟books=scrape_booksprintf已提取{lenbooks}本书的信息项目应用GUI项目概述主要代码在这个项目中,我们将创建一个简单的图形用户界面GUI应用程序-一个待办事项管理器该应用允许用户添加、编辑、删除和标记完成待办import tkinteras tk事项我们将使用Python的标准GUI库tkinter实现from tkinterimport messageboxtkinter是Python内置的GUI工具包,提供了创建窗口、按钮、文本框等界面元素的功能虽然它不是最现代的GUI库,但它简单易学,且无需额外安装,适合初学者入门图形界面编程class TodoApp:def__init__self,root:GUI应用开发需要了解事件驱动编程模型,其中用户的操作如点击按钮会触发相应的事件处理函数这与我们之前学习的顺序执行程序有所不self.root=root同,需要适应这种思维方式self.root.title待办事项管理器#创建任务列表self.tasks=[]#创建界面元素self.task_entry=tk.Entryroot,width=40self.task_entry.gridrow=0,column=0,padx=5,pady=5self.add_button=tk.Buttonroot,text=添加任务,command=self.add_taskself.add_button.gridrow=0,column=1,padx=5,pady=5self.task_listbox=tk.Listboxroot,width=50,height=10self.task_listbox.gridrow=1,column=0,columnspan=2,padx=5,pady=5#添加删除和完成按钮button_frame=tk.Framerootbutton_frame.gridrow=2,column=0,columnspan=2tk.Buttonbutton_frame,text=删除任务,command=self.delete_task.gridrow=0,column=0,padx=5,pady=5tk.Buttonbutton_frame,text=标记完成,command=self.complete_task.gridrow=0,column=1,padx=5,pady=5def add_taskself:task=self.task_entry.getif task:self.tasks.appendtaskself.task_listbox.inserttk.END,taskself.task_entry.delete0,tk.ENDelse:messagebox.showwarning警告,请输入任务内容!def delete_taskself:try:index=self.task_listbox.curselection
[0]self.task_listbox.deleteindexself.tasks.popindexexcept IndexError:messagebox.showwarning警告,请选择要删除的任务!def complete_taskself:try:index=self.task_listbox.curselection
[0]self.task_listbox.itemconfigindex,fg=gray,bg=#f0f0f0except IndexError:messagebox.showwarning警告,请选择要标记的任务!#创建应用root=tk.Tkapp=TodoApprootroot.mainloop项目应用WebFlask框架入门轻量级Web框架,简单灵活路由和视图函数处理URL请求和业务逻辑模板渲染动态生成HTML页面完整Web应用结合前后端实现功能Flask是Python中最流行的Web框架之一,以其简单性和灵活性著称不同于Django等大型框架,Flask只提供核心功能,让开发者可以根据需求选择扩展这个微框架特性使它特别适合小型项目和初学者from flaskimport Flask,render_template,request,redirect,url_for#创建Flask应用app=Flask__name__#存储笔记的列表notes=[]#定义路由和视图函数@app.route/def index:return render_templateindex.html,notes=notes@app.route/add,methods=[GET,POST]def add_note:if request.method==POST:title=request.form[title]content=request.form[content]notes.append{title:title,content:content}return redirecturl_forindexreturn render_templateadd.html#启动应用if__name__==__main__:app.rundebug=True优化技巧Python代码性能优化方法使用适当的数据结构是优化Python代码的关键例如,在需要频繁查找元素时使用集合或字典而非列表;对于大量数值计算,使用NumPy数组代替Python列表可显著提升性能另外,利用列表推导式或生成器代替传统循环可以简化代码并提高效率内存管理技巧在处理大数据集时,要避免在内存中保存完整数据使用迭代器和生成器可以实现惰性计算,一次只处理一小部分数据适当使用del关键字和弱引用weakref模块可以帮助释放不再需要的对象对于临时大型对象,可以使用上下文管理器确保使用后立即释放写出代码PythonicPythonic代码遵循Python之禅原则,简洁明了,利用语言特性例如,使用with语句处理资源,使用解包赋值a,b=b,a交换变量,利用默认字典和集合操作简化代码,以及遵循请求原谅比获得许可更容易的EAFP编程风格,使用try/except而非if检查常见性能陷阱避免在循环中频繁连接字符串,使用join方法或io.StringIO更高效;避免在循环中反复进行全局名称查找;避免创建不必要的临时对象;谨慎使用魔法方法,它们可能比普通函数调用慢;对于CPU密集型任务,考虑使用多进程而非多线程来绕过GIL限制Python的优化遵循过早优化是万恶之源的原则首先应该写出正确、可读的代码,然后使用性能分析工具如cProfile、line_profiler找出瓶颈,有针对性地进行优化在某些极端情况下,可以考虑将性能关键部分用C/C++重写,或使用Cython、Numba等工具进行编译加速代码测试基础单元测试概念测试框架测试驱动开发单元测试是测试软件中最小可测试单元Python提供了多种测试框架,其中unittest测试驱动开发TDD是一种编程方法,先编(通常是函数或方法)的实践良好的单是标准库的一部分,采用类似JUnit的设写测试,然后编写满足测试的代码TDD元测试应该独立、快速、可重复,并且能计pytest是第三方框架,语法更简洁,的工作流程是写测试→运行测试失败→够清楚指出问题所在在Python中,单元功能更强大,支持参数化测试和丰富的插编写代码→运行测试通过→重构这种方测试帮助开发者验证代码的正确性、防止件生态系统选择框架主要取决于项目需法有助于澄清需求、减少调试时间,并生回归错误,并促进良好的设计求和个人偏好成更高质量的代码开发工具链Python代码风格和代码检查工具PEP8PEP8是Python官方的代码风格指南,规定了缩进、行pylint、flake8和pycodestyle等工具可自动检查代码问长度、命名约定等标准题和风格违规包管理和依赖虚拟环境管理pip安装包,requirements.txt和Pipfile记录依赖,venv、virtualenv和conda提供项目隔离的环境,避免poetry集成依赖管理依赖冲突使用一致的开发工具链可以大大提高Python项目的质量和维护性遵循PEP8风格指南不仅使代码美观,还有助于团队成员理解彼此的代码而自动化代码检查工具可以在早期发现潜在问题,减少技术债务虚拟环境是Python开发的重要实践,它为每个项目创建独立的环境,避免全局包冲突现代项目通常使用requirements.txt或Pipfile.lock严格锁定依赖版本,确保不同环境下的一致性更先进的工具如poetry同时处理依赖管理和包发布,提供了更完整的项目管理解决方案其他重要的开发工具还包括git进行版本控制,pre-commit钩子自动化代码检查,black或yapf进行代码格式化,以及mypy等类型检查工具这些工具共同构成了现代Python开发的标准工具链生态系统PythonPython拥有极其丰富的生态系统,涵盖几乎所有应用领域在科学计算和数据处理方面,NumPy提供高效的多维数组操作,是科学Python的基础;SciPy在NumPy基础上提供更多科学计算功能,如积分、优化、信号处理等;而Pandas则提供数据分析和操作的高级工具,如DataFrame结构在数据科学和机器学习领域,Scikit-learn提供简单高效的工具,用于数据挖掘和数据分析;TensorFlow和PyTorch则是深度学习的主流框架;Matplotlib和Seaborn用于数据可视化;NLTK和spaCy专注于自然语言处理Web开发方面,Django是一个功能完备的高级框架,提供电池包含的体验;Flask则是轻量级的微框架,适合小型应用;FastAPI是近年来流行的高性能异步框架,特别适合API开发这些丰富的生态系统使Python成为最通用的编程语言之一,几乎适用于任何领域的开发学习资源和社区官方文档和教程开源项目学习Python官方文档是最权威的参考通过实际项目提升能力•python.org提供完整的语言参考2•GitHub上有大量开源项目•官方教程适合系统学习•阅读源码是最好的学习方式•标准库文档详尽全面•参与开源贡献积累经验进阶学习路径社区和论坛Python持续学习保持竞争力与同行交流是成长的关键•专注特定领域如数据科学•Stack Overflow解答技术问题•在线课程平台如Coursera•Reddit的r/Python和r/learnpython•深入学习设计模式和架构•各地Python用户组线下活动Python学习资源极其丰富,适合不同学习阶段和风格的人群除了官方文档外,还有许多高质量的书籍,如《Python编程从入门到实践》适合初学者,《流畅的Python》适合进阶学习此外,YouTube上有大量免费教程,PyCon等会议的演讲视频也是学习的宝贵资源课程总结与展望50学习章节全面涵盖Python基础到实际应用5+实战项目命令行、数据分析、网络爬虫等100+代码示例涵盖各种编程场景的实用代码∞发展可能Python学习和应用的无限可能恭喜您完成《Python编程基础》课程!在过去的50个章节中,我们从Python语法基础出发,逐步深入数据类型、控制结构、函数、面向对象编程等核心概念,并通过实际项目展示了Python在不同领域的应用价值掌握Python只是旅程的开始随着技术的不断发展,Python也在持续演进,新的库、框架和应用场景不断涌现建议您选择一个感兴趣的方向深入学习,如数据科学、Web开发或自动化,通过实际项目巩固所学知识,并保持与社区的联系,跟踪最新发展记住,编程能力的提升需要持续的实践和探索遇到问题时,培养独立解决的能力,善用文档和社区资源希望这门课程为您的Python之旅奠定了坚实的基础,祝您在编程世界中取得成功!。
个人认证
优秀文档
获得点赞 0