还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
编程Python欢迎来到编程课程!在这门课程中,我们将深入探索这门强Python Python大而灵活的编程语言无论您是编程新手还是有经验的开发者,都Python能为您提供简洁高效的编程体验本课程将从基础语法开始,逐步深入到高级特性和实际应用通过实例驱动的教学方法,您将掌握数据分析、网络开发、人工智能等领域的Python应用技能让我们一起开启这段学习之旅!Python课程概述课程目标学习内容12本课程旨在帮助学生掌握课程内容涵盖基础语Python编程的核心概念和技法、数据结构、函数编程、Python能我们的目标是让每位学面向对象编程、文件操作、生能够独立开发应用网络编程、数据分析、机器Python程序,解决实际问题,并为学习入门等方面我们将通进一步学习人工智能、数据过丰富的示例和实践项目巩科学等高级主题奠定坚实基固理论知识础考核方式3本课程采用多元化考核方式,包括课堂参与()、编程作业20%()、期中测验()和期末项目()期末项目要求30%20%30%学生运用所学知识解决实际问题,并提交完整的项目报告简介Python什么是的历史的特点Python Python Python是一种高级、解释型、通用编程起源于荷兰的研究所,最初以其简洁易读的语法、丰富的标Python PythonCWI Python语言,由荷兰程序员吉多范罗苏姆是作为语言的继承者准库、强大的第三方生态系统和跨平台·ABC Python
1.0()创造于年于年发布,版本于年引入特性而闻名它支持多种编程范式,包Guido vanRossum
198919942.02000它提倡代码可读性和简洁的语法,使开了垃圾回收系统于年括面向对象、命令式、函数式和过程式Python
3.02008发者能够用更少的代码表达概念发布,虽然与之前版本不完全兼容,但编程,使其成为一种极其灵活的语言引入了许多改进的应用领域Python开发WebPython提供了Django、Flask等强大的Web框架,使开发者能够快速构建安全、可扩展的网站和API许多知名网站如Instagram、Pinterest和Spotify都使用Python进行后端开发数据分析凭借NumPy、Pandas等库,Python成为数据分析的首选语言它能高效处理和分析大规模数据集,生成见解和可视化报告,广泛应用于金融、电子商务和科研领域人工智能Python是AI和机器学习领域的主导语言TensorFlow、PyTorch等框架使复杂的机器学习模型实现变得简单自然语言处理、计算机视觉和推荐系统多以Python为基础科学计算科研人员和工程师使用Python进行复杂计算、模拟和建模SciPy、SymPy等库为物理、化学、生物学等学科提供了强大工具,加速了科学发现和创新开发环境搭建解释器安装Python从官网下载最新版安装包用户选择带Python python.org PythonWindows有安装向导的可执行文件;用户可使用命令Mac Homebrewbrew install;用户可通过包管理器如或安装安装时勾选python Linuxapt yumAdd选项以便在命令行中直接调用Python toPATH集成开发环境()选择IDE基于个人喜好和项目需求选择合适的提供强大的代码补IDE PyCharm全和调试功能;轻量且有丰富的扩展;适合VS CodeJupyter Notebook数据分析和交互式编程;是自带的简单,适合初学者IDLE PythonIDE第一个程序Python打开选定的,创建新文件并保存为格式输入经典的IDE.py Hello,程序你好,世界!,运行程序查看输出结果恭喜World!print你,你已经完成了第一个程序!Python基础语法Python注释缩进变量和常量中注释使用符使用缩进来表变量无需声明Python#PythonPython号开始,到行尾结束示代码块,而非花括类型,只需赋值即可这些注释会被解释器号或关键字缩进必使用变量名区分大忽略,仅供开发者理须一致,通常使用个小写,必须以字母或4解代码多行注释可空格不正确的缩进下划线开头Python使用三引号(或)会导致语法错误或逻没有真正的常量,但包围,这也是创建文辑错误缩进的规范按惯例,全大写变量档字符串的方式,用使用让代码具名表示该值不应被修Python于为函数、类和模块有较高的可读性改,如MAX_VALUE=提供说明100数据类型概览字符串数字字符串是字符的序列,可用单引号、Unicode支持整数、浮点数和复数整数精度Python双引号或三引号表示提供丰富的字Python不限,浮点数遵循标准,复数以IEEE754符串处理方法,支持切片、拼接和格式化操形式表示12a+bj作集合列表集合是无序、不重复元素的集合,用花括列表是有序、可变的序列,可包含不同类63号表示,如集合支持数学中的集型的元素列表用方括号表示,如{1,2,3}[1,合操作,如并集、交集等,支持增删改查等操作hello,
3.14]字典元组54字典是键值对的无序集合,用花括号表示,元组是有序但不可变的序列,用圆括号表示,如张三键必须是不可变如元组一旦创建,其元素{name:,age:20}1,hello,
3.14类型,而值可以是任意类型不能修改,常用于表示固定数据数字类型详解整数浮点数复数数学运算中的整数可以是浮点数用于表示小数,复数形式为,提供全面的数学运算Python intfloat complexa+bj Python任意大小,只受限于可用内如或由于二其中是实部,是虚部,支持,包括基本运算符、、
3.
142.718e3a bj+-存你可以使用十进制、进制表示的限制,浮点数计表示虚数单位内置、、、、和数学函数42Python*///%**二进制、八进制算可能有精度误差对于需支持复数运算,包括加减乘模块此外,0b101010mathNumPy或十六进制表要精确小数计算的场景,可除、共轭、模等,尤其适用库扩展了数学功能,提供高0o520x2A示整数支持标准算术运算,使用模块,它提供于科学计算和信号处理领域效的数组运算和高级数学函decimal如加减乘除、幂运算和模运精确的十进制浮点运算数算字符串操作字符串创建1Python中的字符串可以用单引号hello、双引号world或三引号多行文本创建三引号字符串可以跨越多行,保留格式字符串是不可变的,即创建后不能修改其内容,但可以通过拼接创建新字符串字符串索引和切片2使用索引访问字符串中的单个字符,如name
[0]获取第一个字符Python支持负索引,name[-1]表示最后一个字符使用切片语法name[1:4]获取子串,它返回从索引1到3(不包括4)的字符切片还可以指定步长,如name[::2]获取偶数位置的字符常用字符串方法3Python提供丰富的字符串处理方法str.lower和str.upper转换大小写;str.strip移除首尾空白;str.split按分隔符拆分字符串;str.join连接字符串列表;str.replace替换子串;str.find和str.index查找子串位置字符串还支持格式化,如使用f-字符串或format方法列表操作列表创建和访问在Python中,列表使用方括号创建,如fruits=[苹果,香蕉,橙子]元素可以是任何类型,甚至可以混合不同类型通过索引访问元素(如fruits
[0]获取苹果),也支持负索引和切片操作列表嵌套也很常见,如matrix=[[1,2],[3,4]]创建二维列表列表修改与字符串不同,列表是可变的可以使用赋值语句修改元素(fruits
[0]=梨)使用append添加元素到末尾,insert在指定位置插入元素使用del语句、pop方法或remove方法删除元素extend方法或+运算符可合并列表,而clear方法则清空整个列表列表方法Python列表提供多种实用方法sort就地排序列表;sorted函数返回排序后的新列表;reverse反转列表顺序;count计算元素出现次数;index查找元素首次出现的位置列表推导式是创建新列表的简洁方式,如[x**2for xinrange10]创建平方数列表元组操作元组的特点元组的创建和访问12元组是Python中的不可变序列类元组使用圆括号创建,如型,一旦创建就不能修改其元素coordinates=10,20创建单元这种不可变性使元组成为存储固定素元组时需要添加逗号,如数据集合的理想选择元组比列表single_item=42,,否则会被解更轻量化,执行速度略快,常用作释为普通括号表达式元组访问方字典键或集合元素,因为这些数据式与列表相同,使用索引结构要求键是不可变对象(coordinates
[0])、负索引和切片操作获取元素可以通过+运算符连接元组或*运算符重复元组元组的应用场景3元组广泛应用于返回多个值的函数中,如divmod15,2返回7,1,表示商和余数元组解包是Python的强大特性,允许一次性将元组中的值赋给多个变量,如x,y=coordinates命名元组collections.namedtuple结合了元组的轻量和字典的可读性,适合表示简单记录字典操作字典的创建字典的增删改查字典是Python中的键值对集合,使用通过赋值操作添加或修改键值对,如花括号创建,如student={name:student[class]=三班使用del语李明,age:20,score:95}也可以句删除指定键值对,如del使用dict构造函数创建,如student[age]pop方法删除并返回dictname=李明,age=20字典推指定键的值,而popitem删除并返回导式提供创建字典的简洁方法,如{x:最后插入的键值对使用键访问值,x**2for xin range5}创建数字与其如student[name],如果键不存在会平方的映射引发KeyError,可使用get方法提供默认值字典方法字典提供多种实用方法keys、values和items分别返回键、值和键值对的视图;update合并另一个字典;clear清空字典;copy创建浅拷贝;fromkeys从键序列创建新字典Python
3.7+保证字典保持插入顺序,而defaultdict和OrderedDict等特殊字典类型提供额外功能集合操作集合的特点集合的创建和操作集合的数学运算集合是无序、不重复元使用花括号创建集合,集合支持丰富的Python素的集合,类似于数学如苹果香蕉数学运算联合或fruits={,,|中的集合概念橙子创建空集合必须、交集或Python}union中的集合是可哈希对象使用函数,因为空、差集set intersection-的无序集合,因此元素花括号表示空字典通或和对称差{}difference必须是不可变类型(如过方法添加元素,集或add^数字、字符串、元组),或方remove discardsymmetric_difference而不能包含列表或字典法删除元素方还提供、update issubset等可变对象集合自动法合并集合,而和clear issupersetisdisjoint去除重复元素,这使其方法清空集合可用方法检查集合关系不in成为数据去重的理想工操作符检查元素是否存可变集合类型frozenset具在于集合中适用于需要不可变集合的场景,如作为字典键或其他集合的元素运算符算术运算符1Python支持基本算术运算+(加法)、-(减法)、*(乘法)、/(浮点除法,返回浮点数)、//(整数除法,向下取整)、%(取模/取余)和**(幂运算)这些运算符可应用于数字类型,部分还可用于序列,如+用于连接序列,*用于重复序列算术运算符可与赋值结合,如a+=5等效于a=a+5比较运算符2比较运算符用于比较值并返回布尔结果==(等于)、!=(不等于)、(大于)、(小于)、=(大于等于)和=(小于等于)这些运算符可用于所有类型,包括数字、字符串、列表等Python允许链式比较,如abc等效于ab andbc,简化了范围检查逻辑运算符3逻辑运算符用于组合布尔表达式and(逻辑与)、or(逻辑或)和not(逻辑非)Python使用短路求值,如果前一个操作数已确定结果,则不计算后一个逻辑运算符返回操作数本身而非布尔值,如a andb返回b(若a为真)或a(若a为假)位运算符4位运算符作用于整数的二进制表示(按位与)、|(按位或)、^(按位异或)、~(按位取反)、(左移)和(右移)位运算在底层编程和性能优化中特别有用,如标志位处理、位掩码操作和高效计算位运算也可与赋值结合,如a=b等效于a=ab条件语句语句if最基本的条件语句,用于在条件为真时执行代码块语法为if条件:代码块,其中条件是任何返回布尔值的表达式Python中1非零数值、非空序列和非None对象被视为Trueif语句后的代码块必须缩进,通常使用4个空格多个条件判断可以使用逻辑运算符连接语句if-else当需要在条件为真或假时执行不同代码块时使用语法为if条件:代码块1else:代码块2else块是2可选的,但提供了条件不满足时的默认执行路径else语句不能单独使用,必须跟在if语句之后条件表达式(三元运算符)提供简洁写法,如x=a if condition elseb语句if-elif-else用于多条件分支场景,只有第一个满足的条件会执行其代码块语法为if3条件1:代码块1elif条件2:代码块
2...else:代码块nelif(else if的缩写)允许添加任意多个额外条件,最后的else块可处理所有条件都不满足的情况if-elif-else构造只执行一个代码块,不会落空到下一个条件循环语句循环while当条件保持为真时重复执行代码块语法为条件循环体必须在循while:循环for环体内修改条件相关变量,否则可能2导致无限循环循环适用于不确用于遍历序列(如列表、元组、字符while定迭代次数的情况串)或其他可迭代对象语法为for1变量可迭代对象循环体每次迭in:和代,变量被赋予序列中的下一个值break continue函数可同时获取索引和enumerate语句立即退出最内层循环,适用break值于找到第一个符合条件的元素后终止3搜索continue语句跳过当前迭代的剩余部分,直接进入下一次迭代,常用于跳过不符合条件的情况函数基础函数定义在Python中,函数使用def关键字定义,后跟函数名和圆括号内的参数列表函数体必须缩进,通常以冒号结束定义行函数可以包含文档字符串(docstring),用三引号编写,描述函数功能、参数和返回值,便于生成文档和提供帮助信息函数调用调用函数时使用函数名后跟圆括号,括号内包含传递给函数的参数值函数可以有返回值(使用return语句),也可以没有明确的返回值(隐式返回None)函数调用可以作为表达式的一部分,也可以单独作为语句参数传递Python中的参数传递遵循传对象引用的模式不可变对象(如数字、字符串、元组)作为参数时,函数内对其修改不会影响原始值而可变对象(如列表、字典)作为参数时,函数内的修改会反映到调用环境中函数进阶默认参数可变参数默认参数在函数定义时指定默认值,如def greetname,greeting=你好调用使用*args语法可接收任意数量的位置参数,这些参数在函数内部作为元组处理时可以省略这些参数,函数将使用默认值重要提示默认值仅在函数定义时例如def sum_all*numbers可接收任意数量的数字并计算总和可变参数常用计算一次,对于可变默认值(如列表),应使用None作为默认值,然后在函数于包装器函数,将全部参数转发给另一个函数内部创建新的空列表关键字参数匿名函数使用**kwargs语法可接收任意数量的关键字参数,这些参数在函数内部作为字lambda表达式创建简短的匿名函数,格式为lambda参数:表达式这种函数没典处理例如def create_profile**user_info可接收姓名、年龄等各种用户信息有名称,常用于需要函数对象但不值得正式定义函数的场合,如sorted的key关键字参数提供了灵活的函数接口,尤其适合处理可选配置项参数或filter函数lambda表达式只能包含单个表达式,不能包含多条语句模块和包模块的概念模块的导入包的概念和使用模块是包含定义和语句的文件使用语句导入模块,如包是组织模块的方式,是含有Python importimport文件名即模块名,加上后缀模块导入后,使用模块名访问其属文件的目录(.py math__init__.py Python
3.3+允许你将代码分成逻辑相关的部分,提性,如可使用中可选)包可以包含子包和模块,形math.pi from...高可维护性每个模块有自己的命名空语法直接导入特定项,如成层次结构导入包中的模块使用点号,import...from间,避免不同模块间的命名冲突内置使用关键字创建别如可以使用math importpi asimport package.module模块如、、等提名,如实践中应相对导入(如)在math randomdatetime importpandas aspd from.import module供了丰富的功能,无需自行编写避免使用,因为包内部组织代码第三方包通常使用from moduleimport*它可能导致命名空间污染安装,如pip pip install numpy文件操作语句with文件的读写推荐使用with语句处理文件,格式为with文件的打开和关闭读取文件内容使用read方法(读取全部)、openfilename,mode as file:with语句会自动管使用open函数打开文件,语法为openfilename,readline方法(读取一行)或readlines方法(读理资源,确保文件正确关闭,即使发生异常这种mode,mode指定打开模式r读取(默认)、取所有行到列表)文件对象本身也是可迭代的,上下文管理器模式简化了错误处理,提高了代码可w写入(覆盖)、a追加、b二进制模式、t文本可在for循环中逐行处理写入文件使用write方法靠性with语句还可以同时管理多个文件,如with模式(默认)打开文件后必须关闭,使用(写入字符串)或writelines方法(写入字符串列openfile1as f1,openfile2asf2:file.close方法忘记关闭文件可能导致资源泄漏表)写入操作不会自动添加换行符,需要显式包或数据损坏,特别是在写入模式下含\n异常处理语句多个异常处理自定义异常try-excepttry-except语句用于捕获和处理程序执行过程可以为不同类型的异常提供不同的处理方式,Python允许通过继承Exception类(或其子类)中的异常基本语法为try:(可能引发异常的如except ValueError:和except创建自定义异常这使你能够定义特定于应用代码块)followed byexcept:(处理异常的代ZeroDivisionError:可以在一个except子句中程序的错误类型,并提供更有意义的错误信息码块)当try块中的代码引发异常时,程序流捕获多种异常,如except ValueError,使用raise语句手动引发异常,如raise会立即跳转到对应的except块,而不是终止程TypeError:except后面不指定异常类型将捕ValueError无效输入可以使用finally子句序except块可以访问异常对象,获取错误详获所有异常,但这种做法通常不推荐,因为可定义无论是否发生异常都要执行的清理代码,情能掩盖编程错误也可以使用as关键字为异常确保资源正确释放对象命名,如except ValueErroras e:面向对象编程基础类和对象属性和方法构造方法类是创建对象的蓝图,使用关键类属性是属于类的变量,所有实例共享方法是特殊的构造方法,在创class__init__字定义对象是类的实例,通过调用类同一个值实例属性是属于对象的变量,建对象时自动调用它用于初始化对象名创建类封装了数据(属性)和行为每个实例都有独立的副本方法是类中的属性,接受参数和任何其他需要self(方法),支持代码重用和数据抽象定义的函数,第一个参数通常为,的参数构造方法不返回值(确切地说,self的一切皆对象理念意味着类本身代表调用方法的实例类方法使用总是返回)可以通过定义Python None也是对象,是类的实例类定义了装饰器,第一个参数为方法自定义对象的创建过程,type@classmethod__new__对象的结构,而每个对象维护自己独立(类本身)静态方法使用它是在之前调用的类方法,负cls__init__的状态装饰器,不自动传递实责创建并返回新实例@staticmethod例或类引用面向对象编程进阶多态不同类的对象可响应相同的方法调用1继承2子类可获取父类的属性和方法封装3将数据和行为绑定到类中面向对象编程的三大支柱是封装、继承和多态封装是将数据(属性)和行为(方法)绑定到一个单元(类)中,并控制对内部细节的访问Python通过命名约定(如前缀_和__)而非强制机制实现封装继承允许创建基于现有类的新类,子类自动获得父类的所有属性和方法Python支持多重继承,一个类可以从多个父类继承使用super函数可以调用父类方法,解决方法重写时的冲突多态允许不同类型的对象对相同消息作出响应,增强了代码灵活性Python的动态类型系统天然支持鸭子类型多态如果对象行为像鸭子(实现了预期接口),就可以被当作鸭子使用,无需继承特定类标准库介绍Python模块模块模块os sysdatetimeos模块提供了与操作系统sys模块提供了访问Python datetime模块提供处理日交互的功能它包含处理解释器的变量和函数常期和时间的类主要类包文件和目录的函数(如用功能包括命令行参数访括datetime(表示日期和os.path.join合并路径、问(sys.argv)、标准输时间)、date(仅表示日os.listdir列出目录内容、入输出流控制(sys.stdin、期)、time(仅表示时间)os.mkdir创建目录);进sys.stdout、sys.stderr)、和timedelta(表示时间程管理函数(如退出程序(sys.exit)、差)模块支持时间的算os.system执行系统命令、查看已导入模块术运算、格式化os.getpid获取进程ID);(sys.modules)、平台信(strftime)和解析以及环境变量操作(如息(sys.platform)和(strptime)、时区处理os.environ访问环境变量)Python版本(与pytz库结合)等功能os模块提供了跨平台的接(sys.version)sys模块datetime模块在处理时间口,帮助编写可在不同操对于开发命令行工具和了戳、计算时间间隔和记录作系统上运行的代码解解释器状态特别有用日志时特别有用正则表达式正则表达式语法模块的使用常见正则表达式示例re正则表达式是描述字符串模式的强大工的模块提供正则表达式支持邮箱验证Python rer[a-zA-Z0-
9._%+-]+@[a-具基本元素包括字面字符(如匹配主要函数包括(在字符串中;电话号码a re.search zA-Z0-
9.-]+\.[a-zA-Z]{2,}字符)、元字符(如匹配任意字符)查找模式)、(从字符串开(中国);匹配a.re.match r1[3-9]\d{9}URL和量词(如表示零或多次重复)字头匹配模式)、(查找所有*re.findall rhttps://[a-zA-Z0-
9.-]+\.[a-zA-符类如匹配任意数字,是其简写匹配项)和(替换匹配项);地[0-9]\d re.sub Z]{2,}/[a-zA-Z0-
9./=_%-]*IP锚点和分别匹配字符串的开始和结束可以使用预编译模式以提址在复杂场景^$re.compile r\d{1,3}\.{3}\d{1,3}分组使用表示,可捕获匹配部分或应高性能对象提供方法访中,可能需要权衡模式的严格性和可读match group用量词到整个组问捕获组,返回所有捕获组的性,适当使用注释和分组提高可维护性groups元组数据处理JSON格式介绍模块的使用数据的编码和解JSON jsonJSON码JSON(JavaScript对象表Python的json模块提供了示法)是一种轻量级的数JSON数据的编码(序列Python对象与JSON类型据交换格式,易于人阅读化)和解码(反序列化)的映射关系dict对应对象,和编写,也易于机器解析功能主要函数包括list/tuple对应数组,str对和生成它基于名称/值对json.dumps(将Python应字符串,int/float对应数集合和有序值列表的通用对象转换为JSON字符串)字,True/False对应数据结构,几乎所有现代和json.loads(将JSON true/false,None对应null编程语言都支持JSON字符串解析为Python对对于JSON不支持的支持的数据类型包括对象象)处理文件时,可使Python类型(如日期),(键值对集合)、数组、用json.dump直接写入文需要自定义编码器和解码字符串、数字、布尔值件对象,使用json.load器json模块提供了indent(true/false)和null从文件读取JSON数据参数格式化输出,ensure_ascii参数控制是否转义非ASCII字符,sort_keys参数对字典键排序数据处理XML格式介绍模块的使用XML xmlXML(可扩展标记语言)是一种用于存Python标准库提供多种XML处理模块储和传输结构化数据的标记语言它使xml.etree.ElementTree模块提供简单直用自定义标签描述数据,支持嵌套结构观的API,适合大多数场景xml.dom模和属性XML文档由声明、元素、属性、块实现标准DOM API,可进行完整的树注释和处理指令组成相比JSON更为操作xml.sax模块实现SAX解析,适合复杂,但具有更强的验证和命名空间支处理大型XML文件这些模块都支持持,广泛用于配置文件、Web服务和数XML文档的解析、遍历、修改和创建操据交换作数据的解析和生成XML使用ElementTree解析XML tree=ET.parsefile或root=ET.fromstringxml_string遍历元素使用迭代和find/findall方法访问元素属性element.getname或element.attrib修改XML element.setname,value,element.text=content生成XML创建元素、设置属性和文本,然后使用ET.tostring或tree.write输出处理XML命名空间需要特别注意前缀数据库编程数据库操作1SQLiteSQLite是Python标准库中包含的轻量级关系型数据库,不需要单独的服务器进程,将整个数据库存储在单个文件中使用sqlite3模块连接数据库conn=sqlite
3.connectdatabase.db执行SQL语句cursor=conn.cursor;cursor.executeSELECT*FROM users提交更改conn.commit关闭连接conn.closeSQLite支持大多数SQL标准,适合小型应用和原型开发数据库连接2MySQL连接MySQL需要安装第三方模块如mysql-connector-python或PyMySQL连接代码conn=mysql.connector.connecthost=localhost,user=root,password=pass,database=mydbMySQL支持更多高级特性,如完整的事务支持、存储过程和触发器它适合处理大量数据和多用户并发访问的应用,但需要单独的服务器进程和更多配置数据的增删改查3增INSERT INTOusers name,age VALUES,,使用参数化查询防止SQL注入删DELETE FROM users WHERE id=改UPDATE usersSET name=WHEREid=查SELECT*FROMusersWHERE age使用cursor.fetchall、fetchone或fetchmany获取查询结果ORM库如SQLAlchemy提供了面向对象的数据库接口,避免直接编写SQL语句,简化了对象关系映射网络编程基础编程编程编程socket TCPUDP是网络通信的基本单元,提供了跨网(传输控制协议)提供可靠的、有序的、(用户数据报协议)提供无连接的数据socket TCPUDP络的数据传输能力的模块实面向连接的字节流传输服务器端流程创传输,不保证可靠性、有序性或重复保护Python socket现了套接字创建建、绑定地址、监听连接使用创建Berkeley APIsocket socketbind socket.SOCK_DGRAM UDP、接受连接、接收发送数据服务器只需绑定地址,使用sock=socket.socketsocket.AF_INET,listen accept/socket,其中表客户端流程创建、连接服务器接收数据和发送方地址客户端socket.SOCK_STREAM AF_INET socketrecvfrom示地址族,表示、发送接收数据确保数据使用发送数据并指定目标地址,无IPv4SOCK_STREAM TCPconnect/TCP sendto协议支持多种地址族和协议类型,完整性,但有更多开销,适合要求可靠性的需建立连接具有更低的延迟和开销,socket UDP为所有网络编程提供了基础应用如网页浏览、文件传输适合实时应用如视频流、游戏和查询DNS编程HTTP库的使用requestsrequests是Python最流行的HTTP客户端库,提供简单优雅的API安装pip installrequests基本使用response=requests.gethttps://api.example.com/datarequests支持所有HTTP方法(GET、POST、PUT、DELETE等),自动处理复杂性如连接池、SSL验证、cookie持久化、内容解码和请求重试它的设计理念是人性化,使HTTP请求变得像Python代码一样直观发送和请求GET POSTGET请求用于获取资源,可附加查询参数requests.geturl,params={key:value}添加请求头requests.geturl,headers={User-Agent:Mozilla/
5.0}POST请求用于提交数据,如表单数据requests.posturl,data={name:value};JSON数据requests.posturl,json={name:value}文件上传requests.posturl,files={file:openreport.pdf,rb}认证支持requests.geturl,auth=user,pass处理响应数据响应对象包含丰富信息response.status_code(状态码)、response.headers(响应头)、response.text(文本内容)、response.json(解析JSON)、response.content(二进制内容)处理不同类型的响应JSON数据(data=response.json);HTML(使用BeautifulSoup解析);二进制文件(with openimage.jpg,wb asf:f.writeresponse.content)错误处理response.raise_for_status抛出非2xx状态码异常开发入门Web框架介绍FlaskFlask是一个轻量级的Python Web框架,遵循微框架理念,核心简单但可通过扩展增强功能安装pipinstallflaskFlask的设计哲学是提供可扩展的核心,让开发者根据具体需求添加组件与Django等全栈框架相比,Flask更灵活,学习曲线更平缓,特别适合小型项目、API开发和原型设计路由和视图函数Flask使用装饰器定义路由,将URL映射到Python函数@app.route/hello路由可包含变量部分@app.route/user/视图函数接收请求参数并返回响应,通常是HTML内容或JSON数据HTTP方法可通过methods参数指定@app.route/login,methods=[GET,POST]请求数据通过request对象访问request.form、request.args、request.json等模板渲染Flask使用Jinja2模板引擎,支持变量替换、控制结构、模板继承等功能渲染模板return render_templateindex.html,name=user_name模板中使用变量{{name}};条件语句{%ifcondition%}...{%endif%};循环{%for itemin items%}...{%endfor%}模板继承通过{%extends base.html%}和{%block content%}...{%endblock%}实现布局复用,大大减少代码重复。
个人认证
优秀文档
获得点赞 0