Python 学习路线:介绍、基础语法、数据结构、算法、高级主题、框架及异步编程详解
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 中的方法与函数非常相似,只有两个主要区别。
- 方法是隐式用于调用它的对象。
- 方法对包含在类内的数据是可访问的。
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 支持的一些主要范式包括:
- 命令式编程:这种范式侧重于逐步告诉计算机要做什么。Python 支持命令式编程,具有变量、循环和控制结构等功能。
- 面向对象编程(OOP):这种范式基于对象及其相互作用的概念。Python 支持面向对象编程,具有类、继承和多态等功能。
- 函数式编程:这种范式基于函数作为一等公民的概念,强调使用纯函数和不可变数据。Python 支持函数式编程,具有高阶函数、lambda 表达式和生成器等功能。
- 面向切面编程:这种范式基于将程序的横切关注点与主功能分离的概念。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 语法,使您的代码非阻塞且快速。
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
相关文章:

Python 学习路线:介绍、基础语法、数据结构、算法、高级主题、框架及异步编程详解
Python 介绍 Python 是一种 高级 的、解释型 的、通用 的编程语言。其设计哲学强调代码的可读性,使用显著的缩进。Python 是 动态类型 和 垃圾收集 的。 基本语法 设置 Python 环境并开始基础知识。 文章链接:Python 安装与快速入门 变量 变量用于…...

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI+Vant 电影院订票管理系统 的设计与实现
一.项目介绍 基于SpringBootVue 电影院订票管理系统 分为前端和后端。 前端(用户): 登录后支持查看首页、电影、影院和我的信息 支持查看正在热映和即将上映的电影信息 支持购票(需选择影院座位)、看过(评论…...

轻量级购物小程序H5产品设计经典样例
主要是看到这个产品设计的不错值得借鉴特记录如下: 不过大多数购物app都大致相同,这个算是经典样例,几乎都可以复制,我第一次使用,感觉和顺畅。看上去产品是经过打磨的,布局非常好。内容也很丰富。支持异业…...

final, finally, finalize 的区别?
1.final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 内部类要访问局部变量,局部变量必须定义成 final 类型 2.finally 是异常处理语句结构的一部分,表示总是执行 3.finalize …...

4.使用 Blazor 构建 Web 应用程序
微软官方培训 了解如何通过 Blazor Web 用户界面框架构建你的第一个 Web 应用程序。 https://learn.microsoft.com/zh-cn/training/paths/build-web-apps-with-blazor/?viewaspnetcore-8.0 8个模块 目录 微软官方培训 1.使用 Blazor 进行 Web 开发的简介 2.使用 Blazor…...

CentOS操作学习(二)
上一篇学习了CentOS的常用指令CentOS指令学习-CSDN博客 现在我们接着学习 一、Vi编辑器 这是CentOS中自带的编辑器 三种模式 进入编辑模式后 i:在光标所在字符前开始插入a:在光标所在字符串后开始插入o:在光标所在行的下面另起一新行插入…...

OpenCV技术应用(9)— 视频的暂停播放和继续播放
前言:Hello大家好,我是小哥谈。本节课就手把手教大家如何控制视频的暂停播放和继续播放,希望大家学习之后能够有所收获~!🌈 目录 🚀1.技术介绍 🚀2.实现代码 🚀1.技术介绍…...

C#时间戳转换
时间戳转化为时间 long oldtime1703235741; System.DateTime startTime TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0)); var newtimestartTime.AddMilliseconds(oldtime).ToString("yyyy-MM-dd HH:mm:ss.fff"); 时间转化为时…...

Postgresql源码(118)elog/ereport报错跳转功能分析
1 日志接口 elog.c完成PG中日志的生产、记录工作,对外常用接口如下: 1.1 最常用的ereport和elog ereport(ERROR,(errcode(ERRCODE_UNDEFINED_TABLE),errmsg("relation \"%s\" does not exist",relation->relname)));elog(ERRO…...

Python Selenium中的强大等待设置详解
更多资料获取 📚 个人网站:ipengtao.com 在Web自动化测试中,等待是至关重要的一环,而Selenium提供了丰富的等待设置来确保测试脚本的可靠性和稳定性。本文将深入研究Python Selenium中常用的必备等待设置,包括显式等待…...

ACL实现固定时间访问资源——项目
文章目录 一、前言二、项目拓扑三、项目需求四、配置思路五、配置步骤1 IP地址2 端口类型3 静态路由4 流策略 六、结语 免责声明 本文旨在提供信息和解决问题的建议,观点和建议可能不适用于个人情况,仅供参考!!! 文章中…...

前端学习——关于前端框架的思考
前端框架 我们知道在AngularJS,react,vue等前端框架出现之前,前端开发都是通过js直接操作dom树来实现的,而有了前端框架之后,前端开发基本上不需要在直接操作dom树,相当于在原生html的dom树之间和前端程序…...

大创项目推荐 深度学习+opencv+python实现车道线检测 - 自动驾驶
文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 &am…...

Linux(二)常用命令
文章目录 一、文件管理命令1.1 chmod1.2 chown1.3 cat1.4 cp1.5 find1.6 head1.7 tail1.8 less1.9 more1.10 mv1.11 rm1.12 touch1.13 vim1.14 >和>>1.15 scp1.16 ln1.17 怎么用命令查看日志 二、文档管理命令2.1 grep2.2 wc2.3 echo 三、磁盘管理命令3.1 cd3.2 df3.3…...

PHP通过mailer发送邮箱
<?php namespace sw\controler\action;require(APP_DIR./extend/PHPMailer/class.phpmailer.php); require(APP_DIR./extend/PHPMailer/class.smtp.php); class action_test_mailer extends Base {public function test(){$smtpemailto"1967899707qq.com";//接收…...

c# OpenCV 基本绘画(直线、椭圆、矩形、圆、多边形、文本)(四)
我们将在这里演示如何使用几何形状和文本注释图像。 Cv2.Line() 绘制直线 Cv2.Ellipse() 绘制椭圆Cv2.Rectangle() 绘制矩形Cv2.Circle() 绘制圆Cv2.FillPoly() 绘制多边形Cv2.PutText() 绘制文本 一、绘制直线 Cv2.Line(image, start_point, end_point, color, thickness) …...

js键盘事件keydown事件,防止重复触发,组合键的配合使用
js键盘事件keydown事件,防止重复触发 键盘事件类型主要有三种: keydown 、keypress(不建议使用,部分浏览器已放弃)和 keyup 。 添加普通键盘keydown事件 // 监听键盘按下事件document.addEventListener(keydown, function(event) {// 输出按…...

【Docker】升级docker或者docker到docker-ce完全保留镜像和容器,不影响原容器使用方法
升级docker或者docker到docker-ce完全保留镜像和容器,不影响原容器使用方法 一、介绍二、升级方法 三、遇到问题说明 以下是我的使用场景,docker升级到docker-ce,但对于docker-ce升级也通用!亲测! 一、介绍 CentOS自带…...

22 3GPP在SHF频段基于中继的5G高速列车场景中的标准化
文章目录 信道模型实验μ参考信号初始接入方法波形比较 RRH:remote radio head 远程无线头 HTS:high speed train 高速移动列车 信道模型 考虑搭配RRH和车载中继站之间的LOS路径以及各种环境(开放或峡谷),在本次实验场…...

C语言之初识C语言
文章目录 前言一、什么是C语言二、第一个C语言程序三、数据类型四、变量,常量1、变量1.1 变量的命名1.2 变量的分类1.3 变量的使用1.4 变量的作用域和生命周期2、变量 五、字符串1. 概念2. 求解字符串的长度【strlen】3. 转义字符【含笔试题】 六、注释七、选择语句…...

Modbus-TCP数据帧
Modbus-TCP基于4种报文类型 MODBUS 请求是客户机在网络上发送用来启动事务处理的报文MODBUS 指示是服务端接收的请求报文MODBUS 响应是服务器发送的响应信息MODBUS 证实是在客户端接收的响应信息 Modbus-TCP报文: 报文头MBAP MBAP为报文头,长度为7字节,…...

linux搭建gitlab
gitlab的介绍 区别于github,github是面向互联网基于git实现的代码托管平台,gitlab是基于Ruby语言实现的git管理平台软件,一般用于公司内部代码仓库。 gitlab组成 Nginx 静态Web服务器Gitlab-workhorse 轻量级的反向代理服务器Gitlab-shell 用…...

GEM5 Garent CPU cache消息传递路径:1. NI部分
简介 我们仔细分析下图怎么连的,以及消息传递路径。 图来自https://www.gem5.org/documentation/general_docs/ruby/ 代码的连接 fs.py->ruby.py-> gem5/configs/ruby/MESI_Two_Level.py 中的 create_system( options, full_system, system, dma_ports, b…...

Java设计模式之单例模式以及如何防止通过反射破坏单例模式
单例模式 单例模式使用场景 什么是单例模式?保障一个类只能有一个对象(实例)的代码开发模式就叫单例模式 什么时候使用? 工具类!(一种做法,所有的方法都是static,还有一种单…...

python flask+vue实现前后端图片上传
python flaskvue实现前后端图片上传 vue代码如下: <template><div><input type"file" change"handleFileChange"/><button click"uploadFile">上传</button><br><img :src"imageUrl&…...

centos7安装开源日志系统graylog5.1.2
安装包链接:链接:https://pan.baidu.com/s/1Zl5s7x1zMWpuKfaePy0gPg?pwd1eup 提取码:1eup 这里采用的shell脚本安装,脚本如下: 先使用命令产生2个参数代入到脚本中: 使用pwgen生成password_secret密码 …...

5G+云渲染技术:将如何快速推进XR和元宇宙?
XR(扩展现实)领域正在以惊人的速度增长。目前,到 2024 年,一些专家表示这个行业的价值将达到 3000 亿美元。 这个行业发展如此迅速的部分原因是 XR 将在商业环境中的带来巨大利益。近年来,很多企业遇到了将增强现实和…...

【leetcode234】回文链表Java代码讲解
12.21 234. 回文链表 给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true示例 2: 输入&a…...

指标体系构建-02-从0开始,梳理数据指标体系
指标体系构建-02-从0开始,梳理数据指标体系 一个例子,看懂并列式指标梳理 并列式指标体系,一般用于:描述个体情况 当我们想从几个不同角度,描述问题的时候,就需要并列关系 举个栗子🌰…...

高速视频采集卡设计方案:620-基于PCIe的高速视频采集卡
一、产品概述 基于PCIe的高速视频采集卡,通过PCIe3.0X8传输到存储计算服务器,实现信号的分析、存储。 北京太速科技 产品固化FPGA逻辑,适配视频连续采集,缓存容量2GB,开源的PCIe QT客户端软件,…...