Python 学习路线:介绍、基础语法、数据结构、算法、高级主题、框架及异步编程详解

小万哥
• 阅读 361

Python 介绍

Python 是一种 高级 的、解释型 的、通用 的编程语言。其设计哲学强调代码的可读性,使用显著的缩进。Python 是 动态类型垃圾收集 的。

基本语法

设置 Python 环境并开始基础知识。

文章链接:Python 安装与快速入门

变量

变量用于存储在计算机程序中引用和操作的信息。它们还提供了一种使用描述性名称标记数据的方式,以便读者和我们自己更清晰地理解我们的程序。将变量视为包含信息的容器很有帮助。它们的唯一目的是在内存中标记和存储数据。然后可以在整个程序中使用这些数据。

文章链接:Python 变量:创建、类型、命名规则和作用域详解

示例

x = 5
y = 6
sum_result = x + y
print(sum_result)  # 打印 x + y 的和

条件语句

Python 中的条件语句根据特定条件是否为真或为假执行不同的操作。条件语句由 if-elif-else 语句和 match-case 语句处理。

文章链接:Python 条件和 if 语句

强制类型转换

将一个数据类型的值(整数、字符串、浮点数等)转换为另一个数据类型的过程称为类型转换。Python 有两种类型的类型转换:隐式和显式。

函数

在编程中,函数是可重用的代码块,当调用时执行某个特定的功能。函数是每种编程语言的重要组成部分,因为它们有助于使代码更模块化和可重用。

在 Python 中,您使用 def 关键字定义一个函数,然后写出函数标识符(名称),后跟括号和冒号。

文章链接:Python 函数:定义、调用、参数、递归和 Lambda 函数详解

列表、元组、集合和字典

列表:与其他语言中声明的动态大小数组(C++ 中的 vector 和 Java 中的 ArrayList)非常相似。列表不必总是同质的,这使其成为 Python 中最强大的工具之一。

文章链接:Python 列表详解:用法、方法、应用场景

元组:元组是由逗号分隔的 Python 对象集合。在某些方面,元组与列表相似,如索引、嵌套对象和重复,但元组是不可变的,而列表是可变的。

文章链接:Python 元组教程:更新,解包,遍历,合并和内置方法

集合:集合是一种无序的可迭代、可变的数据类型,没有重复元素。Python 的 set 类表示数学上的集合。

文章链接:Python 集合(Sets)1

字典:在 Python 中,字典是一个有序(从 Py 3.7 开始)[无序(Py 3.6 及更早版本)]的数据值集合,用于存储数据值,如地图一样使用键值对。为了优化字典,提供了键值对。

文章链接:Python - 字典1

数据结构和算法

数据结构是一个命名的位置,可用于存储和组织数据。而算法是解决特定问题的一系列步骤。学习数据结构和算法使我们能够编写高效且优化的计算机程序。

数组和链表

数组 在连续的内存位置中存储元素,从而使存储的元素具有容易计算的地址,这允许更快地访问特定索引处的元素。链表 在存储结构上不太严格,元素通常不存储在相邻的位置,因此它们需要用附加标记存储,以便提供对下一个元素的引用。存储方案的差异决定了在给定情况下哪种数据结构更适用。

文章链接:Python 数组和列表:创建、访问、添加和删除数组元素

哈希表

哈希表、映射、HashMap、字典或关联数组都是相同数据结构的名称。它是实现集合抽象数据类型的数据结构,一种可以将键映射到值的结构。

二叉搜索树

二叉搜索树,也称为有序或排序二叉树,是一种根二叉树数据结构,其中每个内部节点的键都大于其左子树中所有键,小于其右子树中的键。

递归

递归 是一种解决计算问题的方法,其中解决方案取决于同一问题的较小实例的解决方案。递归通过使用从其自身代码内部调用自身的函数来解决这些递归问题。

排序算法

排序 是指以特定格式排列数据。排序算法 指定以特定顺序排列数据的方式。最常见的顺序是按数字或词典顺序。

排序的重要性在于,如果数据以排序的方式存储,数据搜索可以被优化到非常高的水平。

高级主题

现在您已经学习了 Python 的基础知识,让我们转向一些高级主题。在这一部分,您将学习关于面向对象编程(OOP)、Lambda、装饰器、迭代器、模块等方面的知识。

迭代器

迭代器 是一个包含可计数数量值的对象。迭代器是一个可以进行迭代的对象,这意味着您可以遍历所有的值。在技术上,在 Python 中,迭代器是实现迭代器协议的对象,该协议包括 iter()next() 方法。

正则表达式

正则表达式 是指定文本中搜索模式的字符序列。通常,这种模式由字符串搜索算法用于字符串的“查找”或“查找和替换”操作,或用于输入验证。

文章链接:Python 正则表达式(RegEx)指南

装饰器

装饰器 是 Python 中的一种设计模式,允许用户在不修改其结构的情况下向现有对象添加新功能。装饰器通常在要装饰的函数定义之前调用。

Lambda 表达式

Python Lambda 函数是匿名函数,这意味着该函数没有名称。我们已经知道 def 关键字用于在 Python 中定义普通函数。类似地,lambda 关键字用于在 Python 中定义匿名函数。

是用户定义的蓝图或原型,用于创建对象。类提供了一种将数据和功能捆绑在一起的方法。创建新类会创建新类型的对象,允许创建该类型的新实例。每个类实例都可以附加属性以维护其状态。类实例还可以具有由其类定义的方法,用于修改其状态。

文章链接:Python 面向对象编程:类、对象、初始化和方法详解

继承

继承 允许我们定义一个类,该类继承自另一个类的所有方法和属性。

文章链接:Python 继承和子类示例:从 Person 到 Student 的演示

方法和 Dunder

Python 中的方法与函数有些相似,只是它与对象/类关联。Python 中的方法与函数非常相似,只有两个主要区别。

  1. 方法是隐式用于调用它的对象。
  2. 方法对包含在类内的数据是可访问的。

Dunder 或魔术方法是 Python 中方法名中具有两个前缀和后缀下划线的方法。Dunder 在这里的含义是“Double Under (Underscores)”。“魔术方法”通常用于运算符重载。魔术方法的一些示例包括:__init____add____len____repr__ 等。

内置模块

Python 解释器具有许多内置函数,它们始终可用于每个解释器会话。其中许多已在前面进行了讨论。例如 I/O 的 print()input(),数字转换函数(int()float()complex()),数据类型转换(list()tuple()set())等。

自定义模块

模块 是指包含 Python 语句和定义的文件。一个包含 Python 代码的文件,例如:example.py,被称为模块,其模块名称将是 example。我们使用模块将大型程序分解为小型、可管理和组织良好的文件。此外,模块提供代码的可重用性。

文章链接:Python 模块:创建、导入和使用

PyPI

PyPI,通常发音为 pie-pee-eye,是一个包含数十万个软件包的存储库。这些软件包的范围从简单的 Hello World 实现到先进的深度学习库。

Pip

Python 的标准软件包管理器是 pip。它允许您安装和管理不属于 Python 标准库的软件包。

Conda

Conda 是一个开源的软件包管理系统和环境管理系统,可在 Windows、macOS 和 Linux 上运行。Conda 可以快速安装、运行和更新软件包及其依赖项。Conda 可以轻松创建、保存、加载和在本地计算机上切换环境。它是为 Python 程序创建的,但它可以打包和分发任何语言的软件。

作为软件包管理器,Conda 帮助您查找并安装软件包。如果您需要一个需要不同版本 Python 的软件包,您不需要切换到其他环境管理器,因为 Conda 也是一个环境管理器。只需几个命令,您就可以设置一个完全独立的环境来运行该不同版本的 Python,同时在正常环境中继续运行您通常的 Python 版本。

列表推导

列表推导是在 Python 中使用单行代码创建列表的简洁方法。它们是创建和操作列表的强大工具,可用于简化和缩短代码。

生成器推导

生成器推导是在 Python 中使用单行代码创建生成器的简洁方法。它们类似于列表推导,但是与其创建列表不同,它们创建一个生成器对象,根据需要按需生成值。

生成器推导是创建生成器的有用工具,它们允许您创建生成一个大序列值的生成器,因为它们允许您在内存中一次性创建生成器而不是整个序列。这可能更有效,并且使用的内存更少,特别是对于大型序列而言。

Python 范式

Python 是一种支持多范式编程的语言,这意味着它支持多种编程范式

。Python 支持的一些主要范式包括:

  1. 命令式编程:这种范式侧重于逐步告诉计算机要做什么。Python 支持命令式编程,具有变量、循环和控制结构等功能。
  2. 面向对象编程(OOP):这种范式基于对象及其相互作用的概念。Python 支持面向对象编程,具有类、继承和多态等功能。
  3. 函数式编程:这种范式基于函数作为一等公民的概念,强调使用纯函数和不可变数据。Python 支持函数式编程,具有高阶函数、lambda 表达式和生成器等功能。
  4. 面向切面编程:这种范式基于将程序的横切关注点与主功能分离的概念。Python 没有内置支持面向切面编程,但可以使用库或语言扩展来实现。

Python 对多个范式的支持使其成为一种灵活多变的语言,使开发人员能够选择最适合其需求的范式。

Python 框架

框架自动化常见解决方案的常见实现,使用户能够专注于应用逻辑而不是基本例行过程。

框架通过为应用程序开发提供结构,使 Web 开发人员的生活更加轻松。它们提供 Web 应用程序中的常见模式,这些模式快速、可靠且易于维护。

同步框架

同步框架在 Python 中以同步方式处理数据流。在同步请求上,您发出请求并停止执行程序,直到从 HTTP 服务器获取响应(或错误,如果无法到达服务器,或者如果服务器花费太长时间回复,则为超时)。解释器将在请求完成之前(直到获得对请求发生的情况的明确答复:是否成功?是否出现错误?超时?...)被阻塞。

Django

Django 是一个基于 Python 的免费、开源的 Web 框架,遵循模型-模板-视图体系结构模式。由 Django 软件基金会维护,这是一个在美国成立的独立组织,作为 501 非盈利组织。

Flask

Flask 是一个用 Python 编写的微型 Web 框架。它被分类为微框架,因为它不需要特定的工具或库。它没有数据库抽象层、表单验证或任何其他现成的第三方库提供的常见功能。

Pyramid

Pyramid 是一个通用的、开源的、基于 Python 构建的 Web 应用程序开发框架。它允许 Python 开发人员轻松创建 Web 应用程序。Pyramid 得到了由 George Soros 发起的企业知识管理系统 KARL 的支持。

FastAPI

FastAPI 是用于在 Python 中开发 RESTful API 的 Web 框架。FastAPI 基于 Pydantic 和类型提示来验证、序列化和反序列化数据,并自动生成 OpenAPI 文档。

异步

异步编程是一种并行编程类型,其中允许单元在与主应用程序线程分开的线程中运行。当工作完成时,它会通知主线程有关工作线程的完成或失败。这种风格主要关注任务的异步执行。Python 有几个用于实现异步编程的框架。

gevent

gevent 是一个提供高级接口给事件循环的 Python 库。它基于非阻塞 IO(libevent/libev)和轻量级的 greenlets。非阻塞 IO 意味着等待网络 IO 的请求不会阻塞其他请求;greenlets 意味着我们可以继续以同步样式编写代码。

AIOHTTP

AIOHTTP 是一个 Python 3.5+ 库,提供了一个简单而强大的异步 HTTP 客户端和服务器实现。

Tornado

Tornado 是一个可伸缩的、非阻塞的 Web 服务器和 Web 应用程序框架,用 Python 编写。它是为 FriendFeed 开发的;该公司于 2009 年被 Facebook 收购,Tornado 随即成为开源项目。

Sanic

Sanic 是一个用于 Python 3.7+ 的 Web 服务器和 Web 框架,旨在提供快速的性能。它允许使用 Python 3.5 中添加的 async/await 语法,使您的代码非阻塞且快速。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
PPDB:今晚老齐直播
【今晚老齐直播】今晚(本周三晚)20:0021:00小白开始“用”飞桨(https://www.oschina.net/action/visit/ad?id1185)由PPDE(飞桨(https://www.oschina.net/action/visit/ad?id1185)开发者专家计划)成员老齐,为深度学习小白指点迷津。
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_