还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
基础编程教程Python欢迎来到《基础编程教程》,这是一门为编程初学者精心设计Python的全面学习课程我们将带领您从零基础开始,逐步掌握Python编程的核心概念和实用技能,直到能够独立开发简单而实用的Python应用程序本课程注重理论与实践相结合,每个章节都包含丰富的编程实例和动手练习,帮助您牢固掌握所学知识无论您是编程新手还是希望掌握这门流行语言的技术爱好者,本课程都将为您提供一个扎实的Python编程基础让我们一起开启这段学习之旅,探索编程的无限可能!Python课程概述课程受众课程结构本课程专为编程初学者和课程包含个精心设计的课时,Python50新手设计,无需任何编程经验每节课时长约分钟,涵盖从45-60如果您已有其他编程语言基础,基础语法到项目实战的全方位内也能通过本课程快速掌握容每节课都包含理论讲解和实Python的独特特性际编码练习学习目标完成课程后,您将能够理解核心概念,熟练应用各种编程技巧,并能Python独立开发基础项目,为进一步学习高级主题打下坚实基础Python课程采用循序渐进的教学方法,每个概念都配有详细解释和实例演示,确保您能够充分理解并掌握所学内容我们还提供丰富的练习题和编程挑战,帮助您巩固知识并培养解决问题的能力讲师介绍教育背景北京大学计算机科学博士,曾在美国斯坦福大学进行访问研究,专注于人工智能与编程语言教学领域专业经验拥有超过年开发经验,曾在多家知名科技公司担任技术顾问,参5Python与开发过多个大型商业项目教学成就曾指导上千名学生学习编程,多次获得最受欢迎讲师称号,在主流编程教育平台累计课程评分
4.9/5讲师始终秉持理论结合实践,学以致用的教学理念,善于将复杂概念简化解释,注重培养学生的编程思维和解决问题的能力您可以通过课程平台的讨论区或每周的在线答疑时间与讲师互动交流,解决学习中的疑难问题第一章简介Python历史起源由荷兰人于年创建,命名灵感来自英国喜剧团体Python Guidovan Rossum1989最初设计目标是创造一种易读性强、语法简洁的编程语言Monty Python版本演进于年发布,于年发布对语言进行了重大改Python22000Python32008Python3进,但不完全向后兼容现在已停止支持,新项目应使用Python2Python3流行趋势近年来,在编程语言排行榜上稳居前列,凭借其简洁的语法和强大的生态系Python统,成为数据科学、人工智能和开发的首选语言之一Web应用领域从科学计算到开发,从人工智能到自动化脚本,在各个领域都有广泛应Web Python用谷歌、、等知名机构都大量使用开发项目NASA YouTubePython作为初学者的首选语言,以其友好的学习曲线和强大的功能性,为编程新手提供了一个理Python想的入门平台了解的发展历程和应用场景,将帮助您更好地理解为什么它如此受欢迎Python的优势Python社区支持庞大活跃的全球开发者社区生态系统丰富的标准库和第三方包多平台兼容一次编写,到处运行简洁易读清晰直观的语法结构的设计哲学强调代码的可读性和简洁性,其语法使用缩进而非括号来定义代码块,使得代码结构更加清晰这种设计减少了初学者的学习障碍,同时也Python提高了开发效率在应用领域,已成为数据分析、机器学习和人工智能的主导语言,同时在开发、自动化测试、科学计算等方面也有广泛应用无论您未来想要专注Python Web哪个技术领域,都能为您提供有力的工具支持Python开发环境搭建解释器安装Python访问官网下载最新的版本安装包对于用户,请确保Python python.org Python
3.9+Windows在安装时勾选选项;对于用户,可以使用安装;用Add Pythonto PATHMac HomebrewLinux户则可以通过包管理器安装选择合适的IDE选择一个适合自己的集成开发环境或代码编辑器初学者推荐使用或IDE VS Code社区版,它们提供了强大的代码补全、调试和项目管理功能PyCharm配置开发工具安装语言插件,配置代码风格检查工具,设置适合自己的主题和字体对于Python VS,建议安装、和等插件;则自Code PythonPylance PythonDocstring GeneratorPyCharm带大部分所需功能设置Jupyter Notebook通过安装,然后在终端中运行命令pip Jupyterpip installjupyter jupyternotebook启动提供了交互式的编程环境,非常适合数据分析和实验性编程Jupyter正确配置开发环境是顺利学习编程的第一步本课程的大部分示例将使用或演VSCodePyCharm示,但您可以根据个人喜好选择任何开发工具无论使用哪种工具,确保熟悉其基本操作,这将大大提高您的编程效率第一个程序Python启动交互式解释器打开命令行窗口,输入或命令,进入的交互式环境,你会看到提示符,表示可以直接输入代码并立即查看执行结果python python3Python编写第一行代码在交互式环境中,输入经典的第一行代码,然后按回车键执行你将看到屏幕上显示,这表示你已成功运行了第一个程序!printHello,World!Hello,World!Python创建脚本文件使用或文本编辑器创建一个新文件,命名为在文件中输入和,保存文件IDE hello.py printHello,World!printWelcome toPython programming!运行脚本文件在命令行中导航到文件所在目录,输入或命令运行该脚本你将看到两行输出,表示脚本成功执行python hello.py python3hello.py恭喜你完成了第一个程序!虽然这个程序非常简单,但它包含了编程的基本流程编写代码、保存文件和执行程序接下来,让我们尝试一个使用函数获取用户输入的简单交互程序Python inputname=input请输入您的名字print您好,+name+!欢迎学习Python编程语法基础Python缩进规则使用缩进来表示代码块,而不是花括号或关键字通常使用个空格作为一级缩进缩进不一致Python4会导致错误,因此必须保持代码的一致缩进IndentationError注释使用单行注释使用号开头,多行注释可以使用三引号或包围良好的注释习惯对提高代码可读性和维#护性至关重要编码规范是官方的代码风格指南,规定了变量命名、缩进、行长度等规范遵循能使代码更易PEP8Python PEP8读、更专业,也便于团队协作关键字和保留字有一系列关键字如、、、等用于特定语法结构,这些关键字不能用作变量名可Pythonif for while def通过查看所有关键字import keyword;printkeyword.kwlist的语法设计注重简洁和可读性,这也是它成为初学者友好语言的重要原因与其他编程语言不同,Python使用缩进和冒号来定义代码结构,这种设计强制开发者编写格式统
一、易于阅读的代码Python在学习过程中,培养良好的编码习惯至关重要建议从一开始就遵循规范,使用一致的命名风格和缩进PEP8方式,并为代码添加适当的注释,这将使您的编程之路更加顺畅变量与数据类型整数浮点数int float如如-1,0,42,
10003.14,-
0.001,
2.5e3可表示任意大小的整数,不会溢出用于表示小数,受限于精度布尔值字符串bool str只有和两个值如世界多行文本True Falsehello,,用于逻辑判断和条件控制文本序列,支持丰富的操作方法是一种动态类型语言,这意味着变量可以在任何时候更改其数据类型变量创建非常简单,只需一个赋值语句,不需要预先声明类型例Python如张
三、、,这些语句分别创建了字符串、整数和布尔类型的变量name=age=25is_student=True可以使用函数查看变量的类型,如将返回类型转换可通过、、、等函数实现,例如type typenameclass strint floatstr boolage_str=str25会将整数转换为字符串了解变量类型及其转换是编程的基础,为后续学习打下重要基础2525数字类型详解运算符功能示例结果加法+5+38减法-5-32乘法*5*315除法返回浮点数/5/
31.
6666...整除向下取整//5//31取余模运算%5%32幂运算**5**3125的整数理论上可以存储任意大小的整数,不存在其他语言常见的整数溢出问题浮点数Python int则遵循标准,与大多数编程语言类似,可能存在精度问题,特别是在处理金融计算时需float IEEE754要特别注意对于更复杂的数学运算,可以使用模块提供的函数例如,计算平方根可使用,计math math.sqrtx算三角函数可使用,获取值可使用处理大量数值计算时,库能提供更高math.sinxπmath.pi NumPy效的操作和更丰富的功能字符串操作基础字符串创建基本操作转义字符中的字符串可以使用单引号、双引字符串支持连接和重复操作,是使用反斜杠创建特殊字符,如换行、Python+*Python\\n号或三引号或创建三种方式在功能中最灵活的数据类型之一制表符、引号或等前缀可创建原\t\\r上基本等同,但三引号允许字符串跨多行始字符串,禁用转义greeting=s1+,+s2+!#结果:Hello,World!path=C:\\Users\\Names1=Hello#或使用原始字符串s2=World stars=**10path=rC:\Users\Names3=This isa#结果:**********multi-line string字符串是中最常用的数据类型之一,用于处理文本数据的字符串是不可变的,这意味着一旦创建,就不能修改其内容任何字Python Python符串操作都会创建一个新的字符串对象,而不是修改原有对象文档字符串是一种特殊的多行字符串,通常位于函数、类或模块的开头,用三引号标记,用于说明代码的用途和用法它们不仅是注docstring释,还可以通过函数或属性访问,是文档系统的重要组成部分help__doc__Python字符串操作进阶索引与切片字符串可以像列表一样使用索引访问单个字符,或使用切片语法提取子串索引从开始,负索引表示从末尾开始计[start:end:step]0数第一个字符•s
[0]#最后一个字符•s[-1]#第到第个字符•s[1:5]#25反转字符串•s[::-1]#常用方法字符串提供了丰富的内置方法,用于各种文本处理任务Python大小写转换•upper/lower#移除前后空白•strip#替换子串•replaceold,new#分割字符串为列表•splitsep#格式化技术提供多种字符串格式化方式,推荐使用Python f-stringPython
3.6+姓名年龄•f{name},{age}是岁•{}{}.formatname,age是岁【旧式】•%s%d%name,age字符串方法和都用于查找子串位置,但处理未找到情况不同返回,而则抛出异常类似地,字符串方法find indexfind-1index ValueError可统计子串出现次数;、等方法用于字符检查;方法可将字符串列表合并为单个字符串count isalphaisdigit join是引入的新特性,它不仅语法简洁,还具有优异的性能在中,可以直接在花括号内嵌入变量、表达式甚至函数调f-string Python
3.6f-string用,如结果,极大提高了代码的可读性和维护性f{x+y}列表List创建与访问修改操作添加元素删除元素使用方括号创建列表,元素可以是任列表是可变对象,可直接修改元素内使用添加单个元素到末尾,使用删除指定值的元素,[]append remove意类型,甚至混合类型通过索引访容使用索引赋值修改单个元素,使合并另一个列表,在指删除并返回指定位置元素,语extend insertpop del问单个元素,通过切片访问多个元用切片赋值可一次修改多个元素定位置插入元素句删除元素或切片素列表是中最常用的数据结构之一,用于存储有序的可变元素集合与字符串不同,列表是可变的,可以在创建后修改其内容列表支持嵌套,即列表的元素可以是另Python一个列表,形成多维数据结构列表推导式是的一个强大特性,提供了创建列表的简洁语法例如,创建了一个包含所有到中偶数平方的列表相比传统的循Python[x**2for xin range10if x%2==0]09for环,列表推导式不仅代码更简洁,执行效率也更高,是处理数据转换的首选工具元组Tuple元组的创建与基本特性元组的访问与操作元组的应用场景元组使用圆括号创建,也可以省略括号,直接元组的访问方式与列表相同,可以使用索引访元组的不可变性使其在某些场景下比列表更适用逗号分隔元素元组是不可变的数据结构,问单个元素,使用切片访问多个元素元组也合一旦创建就不能修改、添加或删除元素支持连接和重复操作+*作为字典的键(列表不能作为键)
1.函数返回多个值
2.point=3,4printpoint
[0]#输出3保存不应被修改的数据colors=red,green,blue#printcolors[1:]#green,
3.省略括号blue多线程编程中的数据安全
4.empty=#空元组new_tuple=point+5,#3,4,single=1,#注意逗号5repeated=point*3#3,4,3,元组解包是中一个非常实用的特性,允许将元组中的元素同时赋值给多个变量例如,将元组的两个元素分别赋值给变量和这Python4,3,4x,y=point pointx y种语法在函数返回多个值或交换变量值时特别有用可以一行代码完成两个变量的交换a,b=b,a虽然元组本身是不可变的,但如果元组包含可变对象(如列表),这些对象的内容仍然可以修改例如,在中,不能修改的结构,但可以修改t=1,[2,3]t列表元素是合法的理解这种不可变性的确切含义对避免潜在的编程错误非常重要t
[1]
[0]=5字典Dict创建字典访问与修改使用花括号和冒号分隔键值对,或使用通过键访问值{}:student[name]构造函数dict添加或修改键值对计算机student[class]=李明科学student={name:,age:20,score:95}字典方法高级应用、、分别返回键、值、键keys valuesitems嵌套字典创建复杂数据结构值对视图字典推导式{x:x**2for xin range5}安全获取值,避免getkey,default KeyError字典是中最强大的数据结构之一,它通过键值对存储数据,提供了高效的查找、添加和删除操作与列表使用整数索引不同,字典可以使用几Python乎任何不可变类型作为键,最常见的是字符串和数字这种键值对的设计使字典非常适合表示现实世界中的关系或属性集合在处理字典时,需要注意键的唯一性如果尝试使用已存在的键添加新项,将覆盖原有值删除键值对可以使用方法(同时返回被删除的popkey值)或语句遍历字典时,循环默认遍历键,但可以使用方法同时获取键和值del for items forkey,value instudent.items集合Set集合特性集合是无序的、不重复的元素集合,类似于数学中的集合概念集合中的元素必须是可哈希的(通常是不可变类型),因此列表和字典不能作为集合元素,但数字、字符串和元组可以创建与修改集合使用花括号创建;或使用函数(注意fruits={apple,banana,orange}set numbers=set[1,2,3,2]重复元素会被自动去除)使用添加元素,或删除元素add removediscard集合操作集合支持多种数学集合操作,如并集或、交集或、差集或和对称|unionintersection-difference差集或这些操作使集合成为处理元素关系的强大工具^symmetric_difference实际应用集合最常见的用途是去除列表中的重复元素集合也常用于成员检测unique_items=setitems_list(使用操作符),由于其哈希表实现,即使对大数据集也能保持高效in还提供了不可变的集合类型,它具有与普通集合相同的功能,但创建后不能修改内容这Python——frozenset使得可以作为字典的键或其他集合的元素可以使用函数从任何可迭代对象创建不可变集frozenset frozenset合集合推导式提供了创建集合的简洁语法,类似于列表推导式,但使用花括号{x**2for xin range10if x%2==集合的一个有趣应用是检查变位词(由相同字母不同排列组成的单词)将返回0}setlisten==setsilent,因为这两个单词包含完全相同的字母True条件语句语句if最基本的条件结构,当条件为真时执行代码块语句if-else条件为真执行一个代码块,否则执行另一个代码块语句if-elif-else3多条件分支结构,顺序测试多个条件条件语句是编程中最基本的控制流结构之一,用于根据不同条件执行不同的代码在中,条件表达式结果为布尔值(或),或者可以转换为布尔值的对象将数字、空字符串、Python TrueFalse Python0空列表、空字典等视为,其他大多数值视为[]{}False True还支持条件表达式(三元运算符),形式为例如,成年未成年这种简洁的语法对于简单的条件判断特别有用嵌套条件语Python value_if_true if condition elsevalue_if_false status=if age=18else句虽然可行,但过多嵌套会降低代码可读性,建议使用或提取逻辑到单独的函数来保持代码清晰elifscore=85if score=90:grade=优秀elif score=80:grade=良好elif score=60:grade=及格else:grade=不及格循环结构循环-for循环是中最常用的循环结构,用于遍历可迭代对象(如列表、元组、字符串、字典、集合等)中的元素基本语法为变量可迭代对象循环for Python for in:体每次迭代,变量会被赋予可迭代对象中的下一个元素值,然后执行循环体函数常与循环配合使用,生成一系列整数它有三种调用形式、和例如,会生成range forrangestop rangestart,stop rangestart,stop,step for i in range5数字到;会生成奇数、、、、遍历字典时,可使用方法同时获取键和值04for i inrange1,10,213579items forkey,value indict.items:printkey,value循环控制语句和可以改变循环的正常流程语句立即终止整个循环,而跳过当前迭代的剩余部分,直接进入下一次迭代这两个语break continuebreak continue句通常与条件语句结合使用,如循环还可以带有子句,当循环正常完成(没有被中断)时执行for xin sequence:ifcondition:break forelse break循环结构循环-while条件测试循环首先测试条件表达式,只有当条件为时,才执行循环体条件测试在每次迭代开始时进while True行循环体执行当条件为时,执行循环体中的语句循环体通常需要包含影响循环条件的语句,否则可能导致无限循True环条件更新循环体执行完毕后,回到第一步重新测试条件如果条件仍为,重复执行循环体;如果条件变为True,退出循环False循环结束当条件变为时循环结束,程序继续执行循环后的语句循环也可通过语句提前终止False break循环适用于不确定迭代次数的场景,例如用户输入验证、文件处理到特定条件或游戏循环等与循环相比,while for while循环更灵活,但也更容易出错,特别是在处理循环终止条件时必须确保循环条件最终会变为,否则会造成无限循False环和循环一样,循环也支持、语句和子句用于立即退出循环,跳过当前迭代的剩for whilebreak continueelse breakcontinue余部分,而子句在循环条件变为时执行(如果循环被终止,则不执行子句)选择使用还是循else Falsebreak elsefor while环,应根据具体需求决定当需要遍历已知集合或固定次数时,循环通常更简洁;当循环需要基于条件判断且迭代次for数不确定时,循环更适合while函数基础函数定义使用关键字定义函数,后跟函数名和参数列表,以冒号结束函数体必须缩进语句指定函数的返回值,如果没有语句,函数默认返回def returnreturnNonedef greetname:向指定的人问好return f你好,{name}!函数调用通过函数名和圆括号中的参数调用函数参数可以是字面值、变量或表达式函数返回值可以被赋给变量、用于表达式或直接打印message=greet小明printmessage#输出你好,小明!函数文档使用三引号字符串作为函数体的第一个语句,创建函数的文档字符串()这种注释可通过函数或属性查看,是良好编程习惯的重docstring help__doc__要部分变量作用域函数内部定义的变量是局部变量,只在函数内可见函数外部定义的变量是全局变量如需在函数内修改全局变量,需使用关键字声明global函数是编程的基本构建块,它封装了一段可重用的代码,接受输入参数,执行特定操作,并返回结果良好设计的函数应遵循单一职责原则,即每个Python函数只负责完成一个特定任务这样的函数更容易理解、测试和维护的嵌套函数允许在函数内部定义另一个函数,这种内部函数只在外部函数的作用域内可见嵌套函数可以访问外部函数的变量,称为自由变量,这是Python闭包()的基础了解变量作用域规则(规则、、、)对避免命名冲突和正确使用变量至关重要closure LEGBLocal EnclosingGlobal Built-in函数参数详解位置参数最基本的参数类型,调用时根据定义顺序传递这些参数是必需的,调用函数时必须提供,否则会引发异常TypeErrordef powerx,n:return x**nresult=power2,3#2的3次方,结果为8默认参数在函数定义时为参数指定默认值,这使得调用函数时可以选择性地省略这些参数默认参数必须放在位置参数之后def powerx,n=2:return x**nresult1=power2#默认计算平方,结果为4result2=power2,3#可以覆盖默认值,结果为8关键字参数调用函数时通过参数名指定参数,可以不按定义顺序传递这提高了代码可读性,特别是当函数有多个参数时def describe_personname,age,city:return f{name}是{age}岁,来自{city}info=describe_personcity=上海,name=张三,age=30可变参数使用接收任意数量的位置参数(作为元组),使用接收任意数量的关键字参数(作为字典)这为函数提供了极大的灵活性*args**kwargsdef print_infoname,*args,**kwargs:printf姓名{name}printf其他信息{args}#元组printf详细资料{kwargs}#字典print_info李四,18,175,city=北京,job=程序员函数进阶特性函数作为对象匿名函数高阶函数lambda在中,函数是一等公民,可以表达式创建简单的、一次性的匿名函数,语法接受函数作为参数或返回函数的函数称为高阶函数Python lambda为参数表达式函数通常用在需要内置的高阶函数有lambda:lambda Python赋值给变量•一个简单函数作为参数的场景映射作为参数传递给其他函数•mapfunc,iterable•过滤作为函数的返回值•filterfunc,iterable•square=lambda x:x*x归约存储在数据结构中result=square5#结果为25•reducefunc,iterable•#作为参数使用from functoolsimport reducedefsquarex:sorted_list=sortednumbers,return x*xkey=lambda x:absx#计算1到10的和f=square#函数赋值给变量total=reducelambda x,y:x+y,result=f5#通过变量调用函数range1,11装饰器是中一个强大的功能,它允许在不修改原函数代码的情况下,扩展函数的功能装饰器实际上是一个函数,接受另一个函数作为参数,并返回一个新函数,通Python常使用符号应用常见用途包括日志记录、权限检查、性能测量等理解装饰器需要掌握闭包概念,即内部函数可以访问外部函数的变量,即使外部函数已经执行完毕@函数式编程是一种编程范式,强调使用纯函数(没有副作用,相同输入总是产生相同输出)和不可变数据虽然不是纯函数式语言,但它支持许多函数式编程特性,Python如表达式、高阶函数和列表推导式这些特性使代码更简洁、更易于理解和调试,特别是在处理集合和数据转换时lambda模块与包模块基础1模块是包含代码的文件,可以包含函数、类和变量Python.py包结构包是包含多个模块的目录,必须包含文件__init__.py导入机制使用语句或语句导入模块或包import from...import的模块系统是代码重用和组织的基础任何文件都可以作为模块导入,而包是包含多个模块的目录,通过文件(在中可选)标识模块可以通过多种方式导入导入整个模块;导入特定对Python.py__init__.py Python
3.3+import modulefrom moduleimport name象;导入模块中所有公开对象(不推荐,可能导致命名冲突)导入时可使用关键字创建别名from moduleimport*as import numpy asnp标准库提供了丰富的模块集合,涵盖文件、系统操作、数据结构、网络通信等多个领域常用标准库包括(操作系统接口)、(系统特定参数和函数)、(日期和时间处理)、(正则表达式)、(随机数生成)、(数Python I/O os sys datetimere randomjson JSON据处理)等第三方模块通常通过安装,如(科学计算)、(数据分析)、(请求)、(开发)等,极大扩展了的应用范围pip NumPy Pandas RequestsHTTP Flask/Django Web Python#创建自定义模块(math_utils.py)def adda,b:return a+bdef multiplya,b:return a*b#在另一个文件中导入和使用import math_utilsresult=math_utils.add3,5#调用模块中的函数#或者使用from语句from math_utils importmultiplyproduct=multiply3,5文件操作基础文件打开与关闭读取文件内容写入文件使用函数打开文件,指定文件路径和模式方法读取整个文件内容;读取一在或模式下,使用方法写入字符串,open read readline wa write(读取,写入,追加等)使用完毕后必须行;读取所有行并返回列表也可以直方法写入字符串列表注意在模式rwa readlineswritelines w调用方法关闭文件,释放系统资源接使用循环遍历文件对象读取每一行下,文件内容会被覆盖;模式则在文件末尾追加close fora内容file=opendata.txt,r,content=file.read#读取全部内容encoding=utf-8line=file.readline#读取一行file.write这是一行文本\n#文件操作...lines=file.readlines#读取所有file.writelines[第一行\n,第二行file.close行\n]with语句推荐使用语句(上下文管理器)操作文件,它with能自动处理文件的关闭,即使发生异常也能确保资源正确释放with opendata.txt,r,encoding=utf-8as file:content=file.read#文件在这里已自动关闭处理文件时,正确指定文件编码非常重要,特别是处理包含非字符(如中文)的文件默认情况下,函数使用系统默认编码,可能导致编码错ASCII open误建议总是明确指定参数,通常使用作为标准编码此外,处理大文件时,应避免一次性读取整个文件内容,而是使用逐行读取或分块读取encoding utf-8的方式,以降低内存使用文件模式的选择影响文件操作行为只读模式(默认);写入模式(创建新文件或覆盖已有文件);追加模式(在文件末尾添加内容);读写模式rwa r+(不创建新文件);读写模式(创建新文件或覆盖已有文件);追加读写模式添加后缀(如、)用于二进制模式,处理图像、视频等非文w+a+b rb wb本文件文件操作进阶二进制文件处理文件操作数据处理CSV JSON二进制模式用于处理非文本文件,如图像、音频和视频文件打开逗号分隔值是一种常见的数据交换格式的模块提是一种流行的数据交换格式,的模块可以在CSVPython csvJSON Pythonjson Python文件时使用、等模式,读写操作返回或接受字节对象供了专门的工具处理文件,能正确处理引号、转义字符等特殊对象和字符串之间转换,非常适合应用和交互rbwbbytes CSV JSON Web API而非字符串情况with openimage.jpg,rb as f:import csvimport jsondata=f.read#读取为字节数据#读取CSV#Python对象转JSON字符串with opencopy.jpg,wb as f:with opendata.csv,r,newline=,data={name:李四,age:30,city:上海}f.writedata#写入字节数据encoding=utf-8asf:json_str=json.dumpsdata,ensure_ascii=Falsereader=csv.readerf printjson_strfor rowin reader:printrow#每行是一个字段列表#JSON字符串转Python对象user_data=json.loadsjson_str#写入CSV printuser_data[name]with openoutput.csv,w,newline=,encoding=utf-8asf:writer=csv.writerfwriter.writerow[姓名,年龄,城市]writer.writerow[张三,25,北京]处理文件路径时,建议使用模块而非传统的,它提供了一个面向对象的,使路径操作更加直观和强大能处理不同操作系统的路径差异,支持路径拼接、文件查找、属性查询等多种操作pathlib os.path APIpathlib例如,创建路径,检查路径是否存在,查找所有文本文件Pathfolder/file.txt path.exists path.glob*.txt在处理大型文件或数据集时,考虑使用生成器和迭代器可以显著提高内存效率例如,处理大型文件时,返回的是一个迭代器,允许逐行处理而不必一次加载全部内容同样,处理数据时,对CSV csv.reader JSON于特别大的数据集,可考虑使用等库进行流式解析,避免内存溢出问题ijson异常处理基本异常处理使用结构捕获和处理异常,防止程序因错误而崩溃块包含可能引发异常的代码,块包含处理异常的代码try-except try except多异常处理一个块可以跟随多个块,分别处理不同类型的异常可以使用元组同时捕获多种异常类型,或使用捕获所有异常tryexcept Exception资源清理块包含无论是否发生异常都会执行的代码,通常用于资源清理操作,如关闭文件、释放网络连接等finally异常抛出使用语句可以主动抛出异常,可以创建内置异常实例或自定义异常类,甚至可以在处理异常后重新抛出raise的异常处理机制是程序健壮性的关键当程序运行遇到错误时,如果没有适当的异常处理,程序可能会突然终止,导致数据丢失或不完整的操作合Python理使用异常处理不仅可以防止程序崩溃,还能提供有意义的错误信息,帮助调试和修复问题提供了丰富的内置异常类型,如(类型错Python TypeError误)、(值错误)、(文件未找到)等,针对不同情况抛出不同异常ValueError FileNotFoundError在设计自定义异常时,应继承自类或其子类,并遵循命名约定(通常以结尾)自定义异常可以携带额外信息,帮助调用者更好地理解和处Exception Error理错误情况此外,异常处理还可以和上下文管理器(语句)结合使用,实现更加优雅的资源管理良好的异常处理实践包括只捕获预期的特定异with常、提供有意义的错误信息、避免空的块、合理使用确保资源释放except finallytry:age=intinput请输入年龄:if age0:raise ValueError年龄不能为负数result=100/ageexcept ValueErroras e:printf输入错误:{e}except ZeroDivisionError:print年龄不能为零exceptException as e:printf发生其他错误:{e}else:printf计算结果:{result}finally:print处理完成面向对象编程基础类对象Class Object类是对象的蓝图或模板,定义了对象的属性和方法对象是类的实例,代表了类定义的具体实体通过调使用关键字创建类,通常首字母大写用类名创建对象,每个对象有自己独立的属性classclass Person:person1=Person#类定义...person2=Person方法属性Method Attribute方法是定义在类中的函数,表示对象的行为方法的属性是对象的数据成员,表示对象的状态可在__init__第一个参数通常是,表示调用该方法的对象实例方法中初始化,或通过对象动态添加selfdef greetingself:person
1.name=张三return f你好,我是{self.name}printperson
1.name面向对象编程是一种强大的编程范式,通过类和对象组织代码,使程序更加模块化和可维护在中,几乎所有内容都是对象,包括数字、字符串、函数等类通过OOP Python方法(构造函数)初始化对象,该方法在对象创建时自动调用参数表示对象本身,用于在类的方法中访问对象的属性和其他方法__init__self支持封装、继承和多态等面向对象的核心概念封装意味着将数据和方法捆绑在一起,并限制对内部数据的直接访问;继承允许创建新类来继承现有类的属性和方法;多态Python使得不同类的对象可以响应相同的方法调用这些特性使代码更加灵活、可重用,并且易于扩展的面向对象设计简洁而强大,无需复杂的语法即可实现高级概念Python OOP面向对象编程进阶继承与多态类方法与静态方法继承允许子类从父类获取属性和方法支持单继承和多继承,使用语法定义继承关系子类方法以类为第一个参数,可以访问和修改类状态;静态方法与类关联但不访问类或实Python classChildClassParentClass@classmethod cls@staticmethod类可以重写父类方法,实现多态行为使用调用父类方法例状态这两种方法都可以通过类名直接调用,无需创建实例superclass Animal:class MathUtils:def speakself:PI=
3.14159return动物发出声音@classmethodclass DogAnimal:def circle_areacls,radius:def speakself:#重写父类方法return cls.PI*radius*radiusreturn汪汪!@staticmethoddef addx,y:return x+y属性访问控制特殊方法魔术方法使用命名约定而非强制语法实现属性的访问控制单下划线前缀表示保护成员,应仅在类内及子类中访问;双双下划线包围的特殊方法等允许自定义对象在各种操作中的行为,如初始化、字符串表示、比较、数Python_name__init__,__str__,__eq__下划线前缀导致名称重整,更难从外部访问装饰器可创建只读属性或控制属性访问学运算等这些方法使对象能够像内置类型一样直观地使用__name@property PythonclassPerson:class Vector:def__init__self,name,age:def__init__self,x,y:self._name=name#保护属性self.x=xself.__age=age#私有属性self.y=y@property def__add__self,other:def nameself:return Vectorself.x+other.x,self.y+other.yreturn self._namedef__str__self:return f{self.x},{self.y}的多继承允许一个类继承多个父类,但可能导致菱形继承问题使用线性化算法确定方法解析顺序,通过方法或属性可查看在设计类结构时,应谨慎使用多继承,优先考虑组合而非继承,遵循组合优于继承的设计原则PythonPython C3MRO mro__mro__魔术方法(也称为双下划线方法或方法)是面向对象编程的强大特性,允许自定义类与的内置操作无缝集成例如,使对象可用于函数,和支持索引访问,和使对象可迭代合理使用这dunder Python Python__len__len__getitem____setitem____iter____next__些特殊方法,可以创建行为像内置类型的自定义对象,提高代码的直观性和可用性正则表达式元字符描述示例匹配任意字符(除换行符外)匹配等.a.b acb,adb匹配字符串开头匹配以开头的字符串^^hello hello匹配字符串结尾匹配以结尾的字符串$world$world匹配前一个字符次或多次匹配等*0ab*c ac,abc,abbc匹配前一个字符次或多次匹配等,但不匹配+1ab+c abc,abbc ac匹配前一个字符次或次匹配和01abc acabc匹配前一个字符恰好次匹配{n}na{3}aaa匹配字符集中的任一字符匹配或[][abc]a,b c分组和捕获匹配等abc+abc,abcabc正则表达式是处理文本的强大工具,用于模式匹配、搜索和替换的模块提供了正则表达式操作的全套功能使用预编译正则表达式可以提高重复使用时的性能方法仅从字符串开头匹配,而在整个字符串中查找第一个匹配Python rere.compile matchsearch项返回所有匹配项的列表,则返回匹配对象的迭代器,适合处理大型文本findall finditer正则表达式中,转义特殊字符使用反斜杠,但在字符串中反斜杠本身需要转义,导致双重转义,如表示数字使用原始字符串前缀可避免这个问题分组捕获允许提取匹配文本的特定部分,通过方法或方法访问替换操作使\Python\\drr\d+group groups用方法,支持使用、等反向引用捕获组,或使用函数动态生成替换值掌握正则表达式需要实践,建议从简单模式开始,逐步学习更复杂的模式和技巧sub\1\2import re#电话号码模式3位区号-3到4位号码pattern=r\d{3}-\d{3,4}#在文本中搜索所有电话号码text=联系方式010-1234,020-567,030-89012matches=re.findallpattern,textprintmatches#[010-1234,020-567,030-8901]#替换文本中的电话号码censored=re.subpattern,XXX-XXXX,textprintcensored#联系方式XXX-XXXX,XXX-XXXX,XXX-XXXX日期和时间处理的模块提供了处理日期和时间的类和函数主要类包括(同时包含日期和时间信息)、(只包含日期)、(只包含时间)和(表示时间间隔)创建日期时间对象可以使用构造函数或工厂方法,如Python datetime datetimedatetime timedelta获取当前日期和时间,从字符串解析日期时间日期和时间的格式化使用方法,根据格式代码(如表示四位年份,表示月份,表示日)将日期时间对象转换为字符串datetime.now datetime.strptime strftime%Y%m%d时间计算是日期时间处理的常见需求可以通过加减对象进行天、小时、分钟等的加减操作,如计算天后的日期日期比较使用标准比较运算符(等)处理时区是国际化应用的关键,timedelta3future_date=today+timedeltadays=3,,==的模块原生支持有限,建议使用第三方库来处理不同时区的转换例如,将本地时间转换为时间,或从一个时区的时间转换到另一个时区对于处理农历、节假日和工作日计算,可以使用等专门的库Python datetimepytz UTCchinese_calendarfrom datetimeimport datetime,timedeltaimport pytz#获取当前日期时间now=datetime.nowprintf当前时间{now.strftime%Y年%m月%d日%H:%M:%S}#时间计算one_week_later=now+timedeltaweeks=1printf一周后{one_week_later.strftime%Y-%m-%d}#时区处理beijing_tz=pytz.timezoneAsia/Shanghaiutc_time=datetime.nowpytz.UTCbeijing_time=utc_time.astimezonebeijing_tzprintf北京时间{beijing_time.strftime%Y-%m-%d%H:%M:%S}标准库精选Python1与模块模块与模块模块ossys random mathstatistics collections模块提供与操作系统交互的功模块用于生成伪随机数,模块提供数学常量和函数,模块提供了专门的容器os randommath collections能,如文件和目录操作、环境变量提供多种分布的随机数生成函数如三角函数、对数、幂运算等数据类型,扩展了内置类型包括访问、进程管理等模块则提包括生成到之间的浮点模块()则提用于计数,提供sysrandom01statistics Python
3.4+Counter defaultdict供系统特定参数和函数,如命令行数,生成指定范围内的整供统计计算功能,包括均值、中位默认值的字典,保持randint OrderedDict参数、解释器信息、标准输数,从序列中随机选择元数、标准差等统计量计算,适用于插入顺序的字典,创Python choicenamedtuple入输出流控制等素,随机打乱序列等数据分析和科学计算建带命名字段的元组,双端shuffle deque队列等标准库是的强大资源,提供了丰富的内置功能,无需额外安装即可使用模块的子模块提供了跨平台的路径操作函数,如连接路径、检查路径是Python ospath os.path joinexists否存在、分离文件名和扩展名等在现代编程中,模块提供了更面向对象的路径处理,是的推荐替代品splitext Pythonpathlib APIos.path模块的特殊容器类型在数据处理中非常有用例如,可以快速统计元素频率;可以简化处理嵌套结构collections Counterword_counts=Countertext.split defaultdictgroups=;使元组更具可读性模块虽然生成的是伪随机数,但对于大多数应用已足够,如果需要更高质量的随机数defaultdictlist namedtuplePoint=namedtuplePoint,[x,y]random(如加密应用),应使用模块模块包含更精确的数学函数,而模块则提供了常用的统计功能,适合处理中小型数据集的基本统计分析secrets mathstatistics标准库精选Python2模块itertools提供了高效的迭代器函数,用于创建和组合复杂的迭代器包括无限计数器,循环迭代,排列组itertools countcycle permutations合,组合,笛卡尔积等这些函数在处理大型数据集时特别有用,因为它们是惰性计算的,内存效率高combinations product模块functools提供了用于函数式编程的工具其中最常用的是函数用于累积操作,用于固定部分参数创建新函数,functools reducepartial用于函数结果缓存优化性能,用于保留装饰器中的原函数元数据这些工具有助于编写更简洁、更高效的函数式代lru_cache wraps码模块shutil提供了高级文件操作,如复制、移动、重命名和删除文件或目录树它是对模块的补充,提供了更方便的文件管理功能常shutil os用函数包括和复制文件,复制整个目录树,移动文件或目录,删除整个目录树等copy copy2copytree movermtree模块argparse用于解析命令行参数,是创建命令行界面的标准工具它支持参数的自动类型转换、默认值、帮助信息生成和子命令等argparse CLI功能使用可以轻松构建专业、用户友好的命令行程序,大大简化了参数处理的复杂性argparse模块是处理迭代数据的强大工具库例如,使用可以按特定键对数据进行分组;使用可以将多个迭itertools itertools.groupby itertools.chain代器连接成一个;使用可以从迭代器中提取指定范围的元素这些函数在大数据处理中特别有价值,因为它们不会一次加载itertools.islice所有数据到内存,而是按需生成数据装饰器是性能优化的利器,特别适合递归函数或重复计算相同输入的函数例如,用装饰斐波那契数列计算functools.lru_cache@lru_cache函数可以显著提高效率模块除了基本文件操作外,还提供了文件归档功能,如创建或文件,解压shutil make_archive ziptar unpack_archive缩文件模块使开发命令行工具变得简单,它自动生成帮助信息,处理错误输入,并支持复杂的参数配置,如互斥组、必选参数和argparse可选参数等,使你的脚本更加专业和用户友好Python数据处理入门数据可视化Matplotlib直观呈现数据分析结果数据分析Pandas高效处理和分析表格数据科学计算NumPy多维数组和数学函数基础已成为数据科学领域的主导语言,得益于其强大的第三方库生态系统提供了高性能的多维数组对象,以及用于操作这些数组的函数库与原生列表相比,数组在处理大量数值数据时速度更快、内存更高效,支持广播机制进Python NumPyndarray Python NumPy行向量化运算,大大简化了科学计算代码建立在之上,提供了和数据结构,用于处理表格和时间序列数据它具有强大的数据清洗、转换、聚合和可视化功能,可轻松处理缺失值、合并不同数据集、执行分组操作等Pandas NumPyDataFrame Series是最成熟的数据可视化库,可创建各种静态、动态和交互式图表基本图表类型包括线图、散点图、条形图、直方图、饼图等,支持自定义颜色、标签、标题和图例这三个库通常一起使用进行数值计算,进行数据预处理和分Matplotlib Python NumPy Pandas析,进行结果可视化安装这些库最简单的方法是使用对于更复杂的需求,可以考虑使用(基于的统计可视化库)、(交互式图表)或(针对的交互式可视化)数据处理是Matplotlib pippip installnumpy pandasmatplotlib SeabornMatplotlib PlotlyBokeh Web一个广阔的领域,这些工具为深入学习奠定了基础importnumpyas npimportpandas aspdimport matplotlib.pyplot asplt#NumPy示例创建数组并进行向量化运算arr=np.array[1,2,3,4,5]printarr*2#
[246810]#Pandas示例创建DataFrame并进行基本分析data={姓名:[张三,李四,王五,赵六],年龄:[25,30,35,40],城市:[北京,上海,广州,深圳]}df=pd.DataFramedataprintdf.describe#生成年龄列的统计摘要#Matplotlib示例创建简单图表plt.figurefigsize=8,4plt.bardf[姓名],df[年龄]plt.title年龄分布plt.xlabel姓名plt.ylabel年龄plt.savefigage_chart.png网络编程基础网络通信原理Python网络编程工具计算机网络通信基于协议栈模型,如模型最常用的协议包括提供了多种网络编程库和工具TCP/IP Python(传输控制协议)可靠的、面向连接的协议模块低级网络接口,支持通信•TCP•socket TCP/UDP(用户数据报协议)不可靠的、无连接的协议库人性化的客户端库•UDP•requests HTTP基于的应用层协议,用于通信模块标准库中的处理工具•HTTP/HTTPS TCPWeb•urllib URL提供全双工通信通道的协议模块简单的服务器实现•WebSocket•http.server HTTP模块网络服务器框架理解地址、端口、域名解析等基本概念对网络编程至关重要•socketserverIP DNS高级框架如和内置了网络通信功能,简化了应用开发Flask DjangoWeb是网络编程的基础,提供了直接与网络协议栈交互的接口使用模块可以创建服务器和客户端、服务器和客户端等,但编写原始代码相对繁琐一个简单的服务器需要绑定地址和端口,监听连接,接受客户端连接,然后处理数据socket socket TCP UDPsocketTCP交换客户端则需要创建,连接到服务器,然后进行数据交换虽然灵活,但编程需要手动处理数据编码、连接管理和错误处理socket socket库极大简化了请求操作,是中最流行的客户端库它提供了直观的,支持各种方法(、、、等),处理参数、表单数据、、文件上传、会话管理、、认证等功能与标准库的相比,requests HTTPPython HTTPAPI HTTPGET POSTPUT DELETEURL JSONCookie urllib代码更简洁,更易于理解例如,下载网页内容只需一行代码响应对象包含状态码、头信息、正文内容等还能处理复杂场景,如设置超时、重定向控制、代理设置等,是网络数据获取的首选工具requests response=requests.geturl requestsimportrequests#发送GET请求response=requests.gethttps://api.example.com/data#检查请求是否成功if response.status_code==200:#解析JSON响应数据data=response.jsonprintf获取到{lendata}条数据#处理返回的数据for item in data[:5]:#显示前5条printfID:{item[id]},名称:{item[name]}else:printf请求失败,状态码:{response.status_code}爬虫入门Web获取网页内容使用库发送请求并获取网页内容需考虑设置合适的头部、处理会话和管理请求频requests HTTPHTML User-Agent cookie率,以避免被网站封禁解析HTML内容使用库解析,提取需要的数据提供了强大的选择器,可通过标签名、选择器或BeautifulSoup HTMLBeautifulSoup CSS定位元素,并访问其文本内容、属性和结构XPath存储提取的数据将提取的数据保存为结构化格式,如、或数据库根据数据量和使用场景选择合适的存储方式,确保数据的完CSVJSON整性和可用性扩展爬虫功能实现更高级功能,如处理渲染的页面使用、设计爬虫调度系统或构建分布式爬虫如框架,JavaScriptSeleniumScrapy以处理大规模数据采集任务爬虫是自动从网站获取数据的程序,在数据分析、市场研究、价格监控等领域有广泛应用但爬虫使用涉及法律和道德问题,应当遵循网站的规则,尊重服务条款,并考虑数据版权和隐私问题爬取数据时应控制请求频率,避免对目标网站造成过Web robots.txt大负担某些网站可能通过反爬虫技术(如验证码、封禁、请求频率限制等)阻止爬虫访问,应当尊重这些限制或寻找合法替代方案如官方IP API是中最流行的解析库之一,它将文档转换为树形结构,便于导航和搜索与正则表达式相比,提供了更高级的解析功能,更适合处理不规则或复杂的对于需要处理渲染内容的网站,可使用BeautifulSoup PythonHTML HTMLBeautifulSoup HTMLHTML JavaScript配合自动控制浏览器,模拟真实用户行为,获取完整渲染后的页面内容对于大型爬虫项目,框架提供了一个完整的爬虫开发框架,包括调度、并发控制、中间件系统等,适合构建高性能、可维护的爬虫系统Selenium WebDriverScrapyimport requestsfrombs4import BeautifulSoup#设置请求头,模拟浏览器访问headers={User-Agent:Mozilla/
5.0Windows NT
10.0;Win64;x64AppleWebKit/
537.36KHTML,like GeckoChrome/
91.
0.
4472.124Safari/
537.36}#发送GET请求获取网页内容url=https://news.example.com/response=requests.geturl,headers=headersresponse.encoding=utf-8#确保中文内容正确解码#使用BeautifulSoup解析HTMLsoup=BeautifulSoupresponse.text,html.parser#提取新闻标题和链接news_items=[]for articlein soup.select.news-item:#假设新闻条目有.news-item类title=article.select_one.title.text.striplink=article.select_onea[href]if notlink.startswithhttp:link=f{url.rstrip/}/{link.lstrip/}news_items.append{title:title,link:link}#打印提取的新闻信息for i,iteminenumeratenews_items[:5],1:printf{i}.{item[title]}printf链接:{item[link]}print数据库操作基础SQLite简介数据库连接与游标是一个轻量级的、零配置的、嵌入式的数据库引擎它不需要独立的服务器进程,直接读写普通磁盘文件,非常使用创建数据库连接,返回一个对象通过连接创建对象,用于执行命令和获取结果SQLite SQLsqlite
3.connect ConnectionCursor SQL适合嵌入式设备和小型应用标准库内置了模块,无需额外安装即可使用,使它成为学习数据库操作的理想选使用后应关闭游标和连接,释放资源推荐使用语句自动管理连接生命周期,确保正确关闭连接Python sqlite3with择SQL操作基础ORM简介通过方法执行语句,包括数据定义语言如和数据操作语言如、、对象关系映射是一种编程技术,将数据库中的表映射为程序中的类,行映射为对象中流行的库包括execute SQLDDL CREATETABLE DMLINSERT UPDATEORM PythonORM、等使用参数化查询占位符避免注入风险对于修改操作,需要调用提交事务;查询操作则、和等简化了数据库操作,提供了更直观的,减少了手写的需求,但可能在复DELETE SELECTSQL commitSQLAlchemy DjangoORM PeeweeORM APISQL使用、获取结果杂查询时性能略低fetchone fetchall虽然功能强大,但有其局限性不适合高并发写入场景、不支持复杂的存储过程、数据库大小有限等对于更复杂的应用,可能需要使用、或等功能更完整的数据库系统标准库不包含这些数据库的接口,需要安装第三SQLite MySQLPostgreSQL MongoDBPython方库如、或等这些库的使用模式与类似,但连接参数和某些特定功能会有差异pymysql psycopg2pymongo sqlite3事务是数据库操作的重要概念,确保数据完整性在中,默认每个连接都启动一个事务,需要手动调用提交更改或回滚使用连接对象作为上下文管理器可以自动处理事务,如果代码块正常结束则提交事务,如果发生异常则回滚事sqlite3commit rollbackwith务在设计数据库时,合理设计表结构、索引和关系是提高性能和可维护性的关键对于初学者,推荐从基本的创建、读取、更新、删除操作开始,逐步学习更复杂的特性如、、子查询等CRUDSQL JOINGROUP BYimportsqlite3#创建/连接到SQLite数据库with sqlite
3.connectstudents.db asconn:#创建游标对象cursor=conn.cursor#创建表cursor.executeCREATE TABLEIF NOTEXISTS studentsid INTEGERPRIMARY KEY,name TEXTNOT NULL,age INTEGER,grade TEXT#插入数据student_data=[1,张三,20,A班,2,李四,19,B班,3,王五,21,A班]cursor.executemanyINSERT ORREPLACE INTOstudents VALUES,,,,student_data#查询数据cursor.executeSELECT*FROM studentsWHERE grade=,A班,rows=cursor.fetchall#打印查询结果printA班学生:for rowin rows:printfID:{row
[0]},姓名:{row
[1]},年龄:{row
[2]}#连接在with块结束时自动关闭虚拟环境与包管理创建虚拟环境激活环境使用或工具创建隔离的环境,避免不同项目之间的包冲突使用特定命令激活虚拟环境,将环境变量指向虚拟环境的解释器venv virtualenvPython Python4依赖管理安装依赖使用记录和共享项目依赖,确保开发和部署环境一致使用安装项目所需的包,可以指定版本号确保环境一致性requirements.txt pip虚拟环境是开发的最佳实践,它为每个项目创建一个独立的环境,包含自己的解释器和包集合,避免了不同项目之间的包版本冲突在中,模块已成为标准库的一部分,是创建虚拟环境的官方推荐工具创建虚拟环境的命令Python Python Python Python
3.3+venv为,其中是环境名称激活虚拟环境的方式因操作系统而异下使用,下使用成功激活后,命令提示符前会显示环境名称python-m venvmyenv myenvWindows myenv\Scripts\activate.bat Unix/Linux/Mac sourcemyenv/bin/activate是的包管理工具,用于安装、升级和卸载包常用命令包括安装包,安装特定版本,卸载包,显示已安装的包,导出依赖列pip Python Python pip install package_name pip install package_name==
1.
2.3pip uninstallpackage_name piplist pip freezerequirements.txt表,安装依赖列表中的所有包除了基本用法外,还支持从版本控制系统安装(如),安装本地包(),以及使用选项安装到用户目录而非系统目录对pip install-r requirements.txt pippip installgit+https://github.com/user/repo.git pipinstall./local-package/--user于更复杂的依赖管理,可以考虑使用或等工具,它们提供了更强大的依赖解析和环境管理功能Pipenv Poetry###创建和使用虚拟环境的基本步骤####
1.创建新的虚拟环境python-m venvmyproject_env#
2.激活虚拟环境#Windows:#myproject_env\Scripts\activate#macOS/Linux:#source myproject_env/bin/activate#
3.安装项目依赖pipinstallnumpy pandasmatplotlib#
4.导出项目依赖pipfreezerequirements.txt#
5.在另一台机器上重建环境#python-m venvnew_env#source new_env/bin/activate或Windows上的等效命令#pipinstall-r requirements.txt#
6.退出虚拟环境#deactivate单元测试测试基本概念unittest框架单元测试是验证代码最小单元通常是函数或方法正确性的自动化测试好的单元测试应该是独立的、可重复的、简单明标准库中的模块提供了完整的测试框架,基于设计使用编写测试需要创建测试类继承自Python unittestJUnit unittest确的,并能快速运行测试驱动开发是一种先写测试再实现功能的开发方法,有助于设计清晰的接口和功能验证,并定义以开头的方法框架提供了各种断言方法如用于验证结果,以及TDD unittest.TestCase test_assertEqual,assertTrue方法用于测试前后的环境准备和清理setUp/tearDown编写有效测试pytest框架有效的单元测试应该覆盖正常情况和边界情况,包括输入验证、异常处理和错误条件测试应该是独立的,不依赖于其他是一个更现代化、更强大的测试框架,语法更简洁,功能更丰富与不同,不要求测试函数继pytest Pythonunittest pytest测试的结果或外部资源如数据库、文件系统对于依赖外部资源的代码,可使用模拟对象来替代这些依赖,使测承特定类,只需定义以开头的函数并使用断言语句提供了丰富的插件生态系统,支持参数化测试、测试覆mock test_pytest试更加可靠和高效盖率分析、并行测试执行等高级功能单元测试是开发过程中的重要环节,不仅可以验证代码的正确性,还有助于提高代码质量并简化后续维护使用测试发现问题的成本远低于在产品环境中修复问题的成本一个好的测试套件可以作为代码的活文档,展示各个组件的预期行为和接口在重构代码时,测试可以提供安全网,确保修改不会破坏现有功能代码覆盖率是衡量测试完整性的指标,表示测试覆盖的代码比例中常用库来收集和分析覆盖率数据,它可以与或集成使用然而,高覆盖率并不保证代码完全无错,因为覆盖率只关注代码路径是否执行,而不验证逻辑的正确性Python coverageunittest pytest除了单元测试外,还有集成测试测试多个组件的交互、系统测试测试整个系统和验收测试从用户角度测试系统等类型,共同构成完整的测试策略掌握单元测试技能是成为专业开发者的重要一步Pythonimport unittest#被测试的函数def adda,b:return a+b#测试类class TestAddFunctionunittest.TestCase:def test_add_positive_numbersself:测试两个正数相加result=add3,5self.assertEqualresult,8def test_add_negative_numbersself:测试负数相加result=add-1,-3self.assertEqualresult,-4def test_add_mixed_numbersself:测试正负数混合相加result=add-5,3self.assertEqualresult,-2def test_add_zeroself:测试与零相加result=add10,0self.assertEqualresult,10#运行测试if__name__==__main__:unittest.main代码优化Python性能分析工具常见性能陷阱在优化代码前,首先需要识别性能瓶颈提供了多种分析工具开发中常见的性能问题包括Python Python模块简单计时,适合整体性能测量在循环中频繁创建对象(特别是字符串连接)
1.time•标准库分析器,提供详细的函数调用信息重复计算相同的值(可用缓存解决)
2.cProfile•行级分析器,找出耗时代码行使用不适当的数据结构(如需频繁查找时使用列表而非集合)
3.line_profiler•内存使用分析,检测内存泄漏全局变量查找(比局部变量慢)
4.memory_profiler•频繁的函数调用(考虑内联简单函数)根据分析结果有针对性地优化,而不是随机猜测或过早优化•未使用生成器处理大数据集(内存效率低)•识别这些模式有助于编写更高效的代码代码优化通常遵循法则的时间花在的代码上因此,应该集中精力优化最关键的部分常见的优化策略包括算法优化(通常影响最大)、使用内置函数和库(它们通常用实现,比纯快)、减少函数调用和对象创建、利用列表推Python90-1090%10%C Python导式代替循环、适当使用生成器处理大数据集、选择合适的数据结构(字典和集合的查找是复杂度)O1对于计算密集型任务,可以考虑使用等优化库,或者使用、等工具将关键代码部分转换为更高效的形式对于密集型任务,使用异步()或多线程可以显著提高性能代码审查是发现优化机会的重要环节,应关注代码可读性、算NumPy CythonPyPy I/O I/O asyncio法复杂度、命名规范和文档注释等方面最后,记住唐纳德克努特的名言过早优化是万恶之源首先确保代码正确可读,然后在必要时基于分析结果进行有针对性的优化·——#性能优化示例#原始低效代码def inefficient_functionn:result=foriin rangen:result+=stri#字符串连接低效return result#优化后的代码def efficient_functionn:result=[]foriin rangen:result.appendstri#使用列表追加return.joinresult#一次性连接#进一步优化使用列表推导式def more_efficient_functionn:return.joinstri foriinrangen#使用cProfile分析性能import cProfile#运行并比较性能cProfile.runinefficient_function10000cProfile.runefficient_function10000cProfile.runmore_efficient_function10000项目实战一命令行工具需求分析与设计明确工具的目标、功能和用户需求设计命令行接口,包括命令结构、选项参数和帮助文档考虑用户体验,确保工具直观易用,错误处理友好代码实现使用模块解析命令行参数,实现核心功能逻辑,添加错误处理和日志功能合理组织代码结构,argparse考虑模块化设计,便于后续扩展和维护测试与调试编写单元测试验证功能正确性,进行集成测试确保各组件协同工作测试各种输入场景,包括边界情况和错误输入,确保工具在各种条件下稳定运行打包与分发使用创建文件,定义项目元数据和依赖关系构建可分发的包格式或,将工setuptools setup.py.whl.tar.gz具发布到或内部包仓库供用户安装使用PyPI在这个项目中,我们将开发一个实用的文件批处理工具,用于批量重命名、格式转换或内容处理这类工具在日常工作中非常实用,比如整理照片、处理日志文件或转换数据格式我们将使用模块构建专业的命令行界面,支持各种argparse参数和子命令,同时提供详细的帮助信息和进度反馈良好的命令行工具应具备清晰的文档、一致的接口风格和适当的错误处理我们将遵循工具设计哲学,使工具专注UNIX于做好一件事,并能与其他工具组合使用在实现过程中,我们将学习如何处理文件和目录操作、如何设计直观的命令行接口、如何优雅处理错误和异常,以及如何将脚本转变为可安装的软件包完成这个项目将巩固前面所学的多Python个知识点,包括文件操作、模块和包、异常处理和项目组织等项目实战二数据分析数据获取与清洗从各种来源(如文件、数据库、等)获取数据,进行数据清洗和预处理处理缺失值、异常值和重CSV API复数据,转换数据类型,确保数据质量使用的强大功能进行数据操作,准备后续分析Pandas探索性数据分析通过统计摘要、数据可视化和相关性分析,了解数据特征和分布计算描述性统计量,绘制各类图表(如直方图、散点图、箱线图等),探索变量间关系这一步旨在发现数据中的模式、趋势和异常现象深度分析与建模基于探索性分析结果,进行更深入的定量分析可能包括分组聚合、时间序列分析、回归分析或简单机器学习模型等使用、或等库进行计算和建模,提取有价值的见解NumPy SciPyscikit-learn可视化与报告创建清晰、直观的数据可视化,展示分析结果使用、或等库制作专业Matplotlib SeabornPlotly质量的图表整理分析过程和结果,形成结构化报告或交互式仪表板,有效传达数据洞察在这个数据分析项目中,我们将分析一个真实世界的数据集,例如电商销售数据、公共健康数据或环境监测数据通过系统的分析过程,从原始数据中提取有价值的业务洞察这个项目将帮助您将前面学到的数据处理技能应用到实际场景中,培养数据思维和问题解决能力项目实施过程中,我们将遵循数据科学工作流程,强调代码的可读性和可重复性使用记录Jupyter Notebook分析过程,结合代码、可视化和文本说明,形成一个完整的分析文档我们也会学习如何处理现实世界中常见的数据挑战,如不平衡数据、异常检测和特征工程等完成这个项目将为您提供一个数据分析作品集示例,展示您的数据处理能力和分析思维Python项目实战三应用Web框架基础应用结构设计表单处理与验证部署与维护Flask是一个轻量级框架,提良好的项目结构对于可维护性至应用通常需要处理用户输入将应用部署到生产环境是项Flask Web Web Flask供了构建应用的核心功能,遵关重要我们将学习如何组织使用扩展可以轻松创建目的最后一步我们将学习如何Web Flask-WTF循微框架理念,只包含最基本的应用,包括路由设计、模板和验证表单,防止恶意输入,提使用作为服务器,Flask GunicornWSGI组件,其他功能通过扩展实现组织、静态文件管理和配置文件供用户友好的错误反馈我们将作为反向代理,以及如何配Nginx这种设计使既灵活又易于学处理采用蓝图将应用实现注册、登录、数据提交等常置数据库连接还将介绍基本的Flask Blueprint习,非常适合初学者和小型项分割为逻辑模块,提高代码复用见表单功能,并添加保护安全实践、日志记录和性能优化CSRF目性和可维护性技巧在这个项目中,我们将开发一个简单但功能完整的应用,如个人博客、任务管理工具或在线笔记本通过这个实际项目,我们将学习开发的各个方面,从前端界面到后端Web Web逻辑,从数据存储到用户认证框架的简洁设计使我们能够专注于核心概念,而不被过多细节分散注意力Flask开发是最流行的应用领域之一,掌握这些技能将大大拓宽您的职业发展路径我们将使用构建用户界面,使用模板引擎生成动态内容,使用或WebPythonHTML/CSS Jinja2SQLite处理数据持久化项目完成后,您将拥有一个可以展示的应用实例,并掌握从需求分析到部署上线的完整开发流程这些知识也为学习更复杂的框架如SQLAlchemy WebWebWeb奠定基础Django项目实战四桌面应用入门界面设计Tkinter1学习标准库中的工具包基础知设计用户友好的界面,遵循界面设计原则,创建Python GUITkinter识,包括窗口创建、常用控件和布局管理布局并添加各种交互元素打包发布事件处理4使用或将应用打包为独立可执实现用户交互响应,通过回调函数连接界面与业PyInstaller cx_Freeze行文件,便于分发给不懂编程的用户务逻辑,处理各种用户事件在这个项目中,我们将开发一个实用的桌面应用程序,例如文件管理器、简单计算器或个人信息管理工具桌面应用开发是的另一个强项,特别适合需要本地Python处理而不依赖网络的场景是自带的库,虽然看起来有些古老,但它简单易学,跨平台兼容性好,非常适合初学者入门编程Tkinter PythonGUI GUI桌面应用开发涉及多个方面的知识整合,包括界面设计、事件驱动编程、多线程处理(保持界面响应)以及本地数据存储在开发过程中,我们需要特别注重用户体验,确保应用直观易用,响应迅速,错误处理友好完成这个项目后,您将能够创建具有图形界面的应用程序,并将其打包为独立可执行文件分享给他人使用,这种能力在开发工具类应用或内部管理软件时特别有用与人工智能Python高级应用构建完整系统,解决实际问题AI深度学习神经网络和高级模型机器学习算法和数据建模数据处理4数据准备与特征工程已成为人工智能和机器学习领域的首选编程语言,这主要归功于其丰富的生态系统和专业库主要框架包括由开发、由开Python AITensorFlow GooglePyTorch Facebook发、通用机器学习和高级神经网络等这些框架使开发者能够构建从简单线性回归到复杂深度神经网络的各种模型,应用于图像识别、自然语言处scikit-learnKeras API理、推荐系统等领域学习路径通常从数据处理基础开始,掌握和等工具,然后学习机器学习算法和技术,如分类、回归、聚类和降维等接下来是深度学习,包括神经网络结AI NumPyPandas构、卷积神经网络和循环神经网络等最后是研究特定应用领域,如计算机视觉或自然语言处理学习资源丰富,包括开源教程、在线课程、实践项目和研究论CNN RNN文的简洁语法和强大库使变得更加平易近人,即使对于编程经验有限的研究人员和数据科学家也是如此Python AI与数据科学Python数据科学工作流数据科学生态Python数据科学是一个系统化的知识提取过程,包含多个关数据科学生态系统包含许多专业工具PythonNumPy键阶段问题定义(明确目标和成功指标)、数据收(高效数值计算)、(数据操作和分析)、Pandas集(从各种来源获取相关数据)、数据清洗(处理缺(数据可视化)、(科学计Matplotlib/Seaborn SciPy失值、异常值和不一致)、探索性分析(理解数据分算)、(机器学习)、(统计建scikit-learn Statsmodels布和关系)、特征工程(创建和选择预测变量)、建模)、(交互式分析环境)这些工具相互配Jupyter模(应用统计或机器学习方法)、结果评估(验证模合,覆盖了数据科学全流程的需求,形成了一个完型效果)和结果沟通(转化发现为可操作洞察)整、强大的工具链实际应用案例数据科学在各行业有广泛应用金融(风险评估、欺诈检测、市场分析)、医疗(疾病预测、医学影像分Python析、药物研发)、零售(客户分析、需求预测、个性化推荐)、制造业(预测性维护、质量控制、供应链优化)、社交媒体(情感分析、用户行为建模、内容推荐)这些应用展示了数据科学如何解决实际业务问题,创造实际价值数据科学结合了统计学、计算机科学和领域专业知识,从数据中提取有价值的洞察和预测之所以在这个领域如Python此流行,是因为它兼具易用性和强大功能,使分析师和科学家能够快速进行原型设计和实验更是成为Jupyter Notebook数据科学的标准工作环境,它允许代码、可视化和文档在同一个界面中无缝整合,便于探索性分析和结果共享对于有志于进入数据科学领域的学习者,建议先打牢编程基础,然后系统学习数据分析工具(尤其是和PythonNumPy),接着掌握数据可视化技能,最后学习机器学习算法和应用实践项目是提升技能的关键从公开数据集入Pandas——手,尝试解决实际问题,构建完整的分析流程数据科学是一个不断发展的领域,持续学习新工具和方法,参与社区交流,关注行业动态,对于保持竞争力至关重要职业发展Python主要职业方向能力提升与就业准备开发者可以选择多种职业路径提升职业竞争力的关键步骤Python后端开发工程师使用、等框架开发服务和构建个人项目组合,展示实际解决问题的能力Django FlaskWebAPI•数据分析师科学家利用、分析数据,提供业务洞察参与开源项目,提高协作能力和代码质量/Pandas NumPy•机器学习工程师使用、开发智能系统获取相关认证,如、云平台认证TensorFlow PyTorch•AWS Azure自动化测试工程师编写测试脚本,确保软件质量建立技术博客,分享知识并建立个人品牌•工程师使用自动化部署和系统管理参加黑客松和编程竞赛,挑战自我并拓展人脉DevOps Python•区块链开发者构建区块链应用和智能合约准备技术面试,熟悉算法、数据结构和系统设计•每个方向都有不同的技能要求和职业发展轨迹雇主看重的不仅是技术能力,还有解决问题的思维和持续学习的态度开发者在就业市场上需求旺盛,薪资水平和职业前景都非常可观根据全球就业趋势数据,各个行业对技术人才的需求持续增长,尤其是在金融Python Python科技、电子商务、人工智能和云计算领域不同的职业路径有不同的薪资范围和晋升轨迹,例如,数据科学和机器学习专家通常比一般的开发者享有更高Web的薪酬,但同时也需要更专业的知识背景在准备简历和作品集时,应强调解决实际问题的能力和技术多样性简历应突出项目成就和量化结果,而不仅仅列出技术栈在面试中常见的技术问题包括基础知识、算法实现、代码调试和系统设计等对于开发者来说,成长不止于编程语言本身,还包括领域知识、软技能和团队协作能力终身学Python Python习的心态对于在这个快速变化的技术领域保持竞争力至关重要,定期学习新库、框架和最佳实践是每个专业人士职业发展的必要投资Python持续学习资源对于想要继续提升技能的学习者,有丰富的优质资源可供选择在书籍方面,推荐《流畅的》深入理解特性,《》学习实用编程Python Python Python Pythoncookbook技巧,《》掌握最佳实践,以及针对特定领域的专业书籍如《》和《》在线课程平台如、Effective PythonPythonforData AnalysisPython MachineLearning Coursera和提供从入门到专业的各类课程,其中许多由顶尖大学和科技公司开发edX UdemyPython社区是学习和成长的重要资源活跃于、等平台,阅读和贡献开源项目代码,不仅可以学习实际工程实践,还能建立专业网络官方文GitHub StackOverflow Python档、、等博客和通讯提供最新技术动态和深度教程参与本地用户组和国际会议如,可以结识同行并了解最新趋势学习效率Real PythonPython WeeklyPython PyCon方面,推荐间隔重复学习法,定期复习巩固知识;采用教学相长方式,尝试向他人解释概念;以项目为导向,解决实际问题,将理论知识转化为实践能力编程最佳实践代码风格与规范1遵循编码规范,保持一致的命名和格式PEP8文档与注释编写清晰的文档字符串和必要的代码注释版本控制3使用管理代码,掌握分支、合并和协作工作流Git代码质量不仅关乎功能实现,更影响长期维护和团队协作是官方的代码风格指南,规定了缩进、行长度、命名约定等规范遵循一致的代码PEP8Python风格可以提高可读性,减少错误使用自动格式化工具如、和可以帮助强制执行这些规范命名是代码可读性的关键变量和函数名应使Black flake8pylint用小写加下划线,类名使用首字母大写,常量全部大写加下划线名称应当清晰表达其用途,避免模糊缩写snake_case PascalCase文档和版本控制是专业开发的重要组成部分良好的文档包括模块级描述、函数和类的文档字符串,说明用途、参数、返回值和示例注释应解释为什么而非是什么,后者应由代码本身表达是当前最流行的版本控制系统,掌握基本操作如、、、是必备技能学习使用分支管Git commitpush pullmerge理功能开发,编写有意义的提交信息,遵循团队协作流程如在团队开发中,代码审查是保证质量的重要环节,应积极参与并持开放学习的态Git Flow度这些最佳实践不仅适用于,也是所有专业软件开发的基础Python高级主题预览异步编程asyncio引入的模块提供了编写单线程并发代码的基础设施通过语法,可以创建协程,实现高效的异步操作异步编程特别Python
3.4asyncio async/await I/O适合密集型应用,如网络服务器、爬虫和客户端,能够显著提高程序处理并发请求的能力,同时避免多线程编程中的复杂性和资源开销I/O API函数式编程虽然主要是面向对象语言,但它也支持函数式编程范式这包括使用纯函数无副作用、不可变数据结构、高阶函数如、、和Pythonmap filterreduce函数组合函数式编程促进更简洁、更可测试的代码,特别适合数据转换和并行处理熟悉函数式概念如表达式、闭包和递归对编写高质量lambda代码很有帮助Python元编程元编程是编写能够操作代码读取、生成或转换的程序提供了强大的元编程工具,包括装饰器、元类、描述符和抽象基类等这些特性允许Python开发者创建灵活、可扩展的,实现代码生成、约束检查、接口定义等高级功能虽然元编程强大,但也增加了复杂性,应谨慎使用,确保不影响API代码可读性性能优化与C扩展当代码性能不足时,可以考虑与编译语言集成提供了多种与集成的方式,包括、、等特别流行,它PythonPython C/C++ctypes SWIGCython Cython允许将代码转译为,显著提升执行速度此外,、等库广泛使用扩展实现核心功能,而是一个使用编译技术的替PythonCNumPyPandasC PyPyJIT Python代解释器,提供更好的性能这些高级主题代表了深入学习的方向,适合已经掌握基础知识并希望进一步提升的开发者异步编程改变了传统的代码执行模型,使单线程程序能够Python高效处理并发任务函数式编程提供了一种不同的思考问题和组织代码的方式,适合数据处理和并行计算元编程则展示了作为动态语言的强大灵活Python性,能够在运行时检查和修改程序结构性能优化是进阶学习中不可避免的话题虽然以其可读性和开发效率著称,但在某些计算密集型场景下可能面临性能瓶颈掌握性能分析工具PythonPython和优化技术,了解如何在必要时与集成,是成为高级开发者的重要一步这些高级主题不仅拓展了技术视野,也培养了更深入的编程思维和解C/C++Python决问题的能力随着对这些主题的探索,您将发现远不止是一门简单的脚本语言,而是一个功能丰富、表达力强的编程生态系统Python课程总结与下一步504课时实战项目基础到进阶的全面学习应用知识解决实际问题20+∞核心概念可能性编程的基础构建块能力的无限应用PythonPython在这门基础编程课程中,我们已经从零基础起步,系统学习了的核心概念和实用技能从语法基础到数据结构,从函数编程到面向对象,从文件处理到网络通信,我们建立了全面的编程知识体PythonPythonPython系四个实战项目将理论付诸实践,培养了解决实际问题的能力和项目经验这些知识和技能为您在软件开发、数据分析、人工智能等多个领域的深入学习和职业发展奠定了坚实基础学习编程是一段永无止境的旅程根据您的兴趣和职业目标,可以选择不同的发展方向深入开发可学习或等框架;专注数据科学可深入、和机器学习库;对人工智能感兴趣可学习Web DjangoFlask NumPyPandas或;系统自动化则可研究工具链和云平台集成持续编写代码、阅读优质教程、参与开源项目和技术社区是提升能力的有效途径最重要的是保持好奇心和学习激情,在解决真实问题的TensorFlow PyTorchDevOps过程中不断成长的简洁优雅和强大生态将伴随您探索编程世界的每一步Python。
个人认证
优秀文档
获得点赞 0