首页 > 编程知识 正文

python常用模块小结(python模块介绍大全)

时间:2023-12-10 13:48:23 阅读:314024 作者:LXNF

本文目录一览:

Python多线程总结

在实际处理数据时,因系统内存有限,我们不可能一次把所有数据都导出进行操作,所以需要批量导出依次操作。为了加快运行,我们会采用多线程的方法进行数据处理, 以下为我总结的多线程批量处理数据的模板:

主要分为三大部分:

共分4部分对多线程的内容进行总结。

先为大家介绍线程的相关概念:

在飞车程序中,如果没有多线程,我们就不能一边听歌一边玩飞车,听歌与玩 游戏 不能并行;在使用多线程后,我们就可以在玩 游戏 的同时听背景音乐。在这个例子中启动飞车程序就是一个进程,玩 游戏 和听音乐是两个线程。

Python 提供了 threading 模块来实现多线程:

因为新建线程系统需要分配资源、终止线程系统需要回收资源,所以如果可以重用线程,则可以减去新建/终止的开销以提升性能。同时,使用线程池的语法比自己新建线程执行线程更加简洁。

Python 为我们提供了 ThreadPoolExecutor 来实现线程池,此线程池默认子线程守护。它的适应场景为突发性大量请求或需要大量线程完成任务,但实际任务处理时间较短。

其中 max_workers 为线程池中的线程个数,常用的遍历方法有 map 和 submit+as_completed 。根据业务场景的不同,若我们需要输出结果按遍历顺序返回,我们就用 map 方法,若想谁先完成就返回谁,我们就用 submit+as_complete 方法。

我们把一个时间段内只允许一个线程使用的资源称为临界资源,对临界资源的访问,必须互斥的进行。互斥,也称间接制约关系。线程互斥指当一个线程访问某临界资源时,另一个想要访问该临界资源的线程必须等待。当前访问临界资源的线程访问结束,释放该资源之后,另一个线程才能去访问临界资源。锁的功能就是实现线程互斥。

我把线程互斥比作厕所包间上大号的过程,因为包间里只有一个坑,所以只允许一个人进行大号。当第一个人要上厕所时,会将门上上锁,这时如果第二个人也想大号,那就必须等第一个人上完,将锁解开后才能进行,在这期间第二个人就只能在门外等着。这个过程与代码中使用锁的原理如出一辙,这里的坑就是临界资源。 Python 的 threading 模块引入了锁。 threading 模块提供了 Lock 类,它有如下方法加锁和释放锁:

我们会发现这个程序只会打印“第一道锁”,而且程序既没有终止,也没有继续运行。这是因为 Lock 锁在同一线程内第一次加锁之后还没有释放时,就进行了第二次 acquire 请求,导致无法执行 release ,所以锁永远无法释放,这就是死锁。如果我们使用 RLock 就能正常运行,不会发生死锁的状态。

在主线程中定义 Lock 锁,然后上锁,再创建一个子 线程t 运行 main 函数释放锁,结果正常输出,说明主线程上的锁,可由子线程解锁。

如果把上面的锁改为 RLock 则报错。在实际中设计程序时,我们会将每个功能分别封装成一个函数,每个函数中都可能会有临界区域,所以就需要用到 RLock 。

一句话总结就是 Lock 不能套娃, RLock 可以套娃; Lock 可以由其他线程中的锁进行操作, RLock 只能由本线程进行操作。

python需要学习什么内容?

Python的学习内容还是比较多的,我们将学习的过程划分为4个阶段,每个阶段学习对应的内容,具体的学习顺序如下:

Python学习顺序:

①Python软件开发基础

掌握计算机的构成和工作原理

会使用Linux常用工具

熟练使用Docker的基本命令

建立Python开发环境,并使用print输出

使用Python完成字符串的各种操作

使用Python re模块进行程序设计

使用Python创建文件、访问、删除文件

掌握import 语句、From…import 语句、From…import* 语句、方法的引用、Python中的包

②Python软件开发进阶

能够使用Python面向对象方法开发软件

能够自己建立数据库,表,并进行基本数据库操作

掌握非关系数据库MongoDB的使用,掌握Redis开发

能够独立完成TCP/UDP服务端客户端软件开发,能够实现ftp、http服务器,开发邮件软件

能开发多进程、多线程软件

③Python全栈式WEB工程师

能够独立完成后端软件开发,深入理解Python开发后端的精髓

能够独立完成前端软件开发,并和后端结合,熟练掌握使用Python进行全站Web开发的技巧

④Python多领域开发

能够使用Python熟练编写爬虫软件

能够熟练使用Python库进行数据分析

招聘网站Python招聘职位数据爬取分析

掌握使用Python开源人工智能框架进行人工智能软件开发、语音识别、人脸识别

掌握基本设计模式、常用算法

掌握软件工程、项目管理、项目文档、软件测试调优的基本方法

互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。

想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,中博软件学院、南京课工场、南京北大青鸟等开设python专业的学校都是不错的,建议实地考察对比一下。

祝你学有所成,望采纳。

请点击输入图片描述

python中类的理解与总结?

9. 类

Python 的类机制通过最小的新语法和语义在语言中实现了类。它是 C++ 或者 Modula-3 语言中类机制的混合。就像模块一样,Python 的类并没有在用户和定义之间设立绝对的屏障,而是依赖于用户不去“强行闯入定义”的优雅。另一方面,类的大多数重要特性都被完整的保留下来:类继承机制允许多重继承,派生类可以覆盖(override)基类中的任何方法或类,可以使用相同的方法名称调用基类的方法。对象可以包含任意数量的私有数据。

用 C++ 术语来讲,所有的类成员(包括数据成员)都是公有( public )的(其它情况见下文 私有变量),所有的成员函数都是虚( virtual )的。用 Modula-3 的术语来讲,在成员方法中没有简便的方式引用对象的成员:方法函数在定义时需要以引用的对象做为第一个参数,调用时则会隐式引用对象。像在 Smalltalk 中一个,类也是对象。这就提供了导入和重命名语义。不像 C++ 和 Modula-3 中那样,大多数带有特殊语法的内置操作符(算法运算符、下标等)都可以针对类的需要重新定义。

在讨论类时,没有足够的得到共识的术语,我会偶尔从 Smalltalk 和 C++ 借用一些。我比较喜欢用 Modula-3 的用语,因为比起 C++,Python 的面向对象语法更像它,但是我想很少有读者听过这个。

Python 标准库模块 - re

正则表达式引擎对正则表达式文本进行编译生成正则表达式对象,再由正则表达式对象对目标文本进行匹配,后返回匹配结果。

正则表达式中一共包含 2 中字符: 普通字符 、 元字符

匹配单个字符的元字符及其含义:

匹配重复性的元字符及其含义:

匹配位置的元字符及其含义:

分组匹配的元字符及其含义:

表示或运算的元字符:

转义元字符:

在 Python 中使用正则表达式,我们需要借助 re 模块提供的强大 API,下面我们就来学习几个 re 模块常用的接口吧~

参数说明: findall("正则表达式", "要匹配的字符串", flags=标志1|标志2|...)

返回值:以列表形式返回匹配到的字符串。

下面,我们用 findall 返回 Python 之禅中首尾用到的反义词:

运行结果:

当正则表达式中含有一个以上分组时, findall 返回的列表由元组构成,元组中包含每个分组匹配到的内容。如果只有一个分组,则返回由该分组匹配到的内容组所构成的列表:

match 函数返回的结果是一个 SRE_Match 对象:

SRE_Match 具有很多的属性,比如 .string 属性可以方便我们我获取在匹配时输入的字符串:

属性 .re 可以获取匹配时使用的编译后的正则表达式模式:

由于默认使用了 re.UNICODE ,所以我们这里的 w 可以匹配中文字符。

属性 .regs 则以列表的形式返回正则表达式匹配到的内容以及各个分组陪陪到的内容,不过请注意,返回的都是索引的形式:

可以使用序列切片来看一下我们的正则表达式及其中的两个分组所匹配到的内容:

SRE_Match 对象也提供了非常多好用的方法,比如 groups 可以获取各个分组匹配到的内容:

group 则可以灵活地获取正则表达式或对应分组匹配到的内容:

如果使用的正则表达式定义了分组的名称, group 还可以通过名称获取相应分组匹配的内容:

在定义了分组的名称之后,还可以方便地使用 groupdict 以字典的形式返回所有分组匹配的结果:

最后需要注意的是, match 从字符串的开头开始匹配,如果开头不符合要求,则直接返回 None 。

与 match 匹配开头不同, search 匹配第一个符合规则的字符串,未成功则返回 None 。参数: re.search(pattern, string, flags=0) ;返回值同 match 。

在介绍 match 的使用时,最后一个例子,由于我们在字符串前面添加了 'PYTHON' 导致 match 使用原来的正则表达式无法匹配,返回 None 。此时,使用 search 就可以迎刃而解啦:

运行结果:

小结:

参数: re.split(pattern, string, maxsplit=0, flags=0) , split 功能非常强大,以正则表达式匹配到的标志来分隔字符串,比如下面这样一个混乱的字符串,我们要提取其中所有的数字:

下面,我们就来详细介绍一下 split 的用法。

首先,是以单字符切割:

以分号切割时,共产生了 4 个子字符串,放在列表中返回。

下面,还是以单字符切割,但可以使用正则表达式中的 [] 来指定多种字符:

由于字符串 line 中有连续的 2 个分号,逗号或者空格,因此可以使用 [;s,]+ 来切割:

最后,上面的字符串在切割时,分隔符都没有被保留下来,使用括号捕获分组,即可保留分隔符:

re.sub 提供比字符串的 replace 方法更加强大的功能:对于输入的字符串 string ,利用正则表达式 pattern 强大的字符串处理功能,实现复杂的字符串替换处理为 repl ,返回被替换后的字符串。

下面的例子中,我们将句子中多余的空格和数字去掉:

如果想要知道替换过程中,共发生了多少次替换,可以使用 subn :

小结:

上述的案例中,我们每次都需要传入正则表达式,相应的函数每次在调用时,都需要编译一次正则表达式。如果上述过程需要多次重复,那么每次都去耗费时间编译正则表达式是很不划算的。

re 模块为我们提供了 compile 函数,用来编译正则表达式模式,返回编译好模式。因此,可以把那些常用的正则表达式编译成正则表达式对象,以提高效率。

格式: re.compile(pattern, flags=0) ,其中 pattern 为编译时用的表达式字符串, flags 为编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配等。常用的 flags 有:

注:使用按位或 | 连接多个 flags 。

我们上述介绍的 re 模块的匹配、分割、替换函数, compile 函数的返回值类提供了相应的方法,使用方式类似,只是不需要传入正则表达式字符串而已。

由于用法几乎一致,这里就不一一举例啦~

贪婪模式 : * + ? {m,n} ,正则表达式的重复默认总是尽可能多得向后匹配内容。

非贪婪模式 : *? +? ?? {m,n}? ,尽可能少的匹配内容。

python培训入门教程?怎样入门呢?

python作为一个编程语言,具有与其他编程语言同等的能力。冠冕堂皇地讲,是所有语言都是图灵等价的。不过python作为一门语言,尤其独特的优点,简单易学,内置了很多库。也很容易扩展。Python培训课程如何学?

可以选一本通俗易懂的书,找一个好的视频资料,然后自己装一个IDE工具开始边学边写。下面我具体来讲讲:

1.找一本靠谱的书,难度一定要是入门级别,千万不能太复杂,不要一下子陷进去,会打乱节奏,学东西要循序渐进,不能一口吃个胖子.打个比方,学过java的同学都听过大名鼎鼎的thinking in java,这边书很厚很全,若一上来就学,肯定会吃力,时间长了就会失去兴趣,因此对初学者来说,一定要找一本通熟易懂的,简单的书。入门的书非常关键。

入门的书很多,但是我个人强烈推荐《A Byte of Python》,这本书我读了2遍,作者写作思路非常清晰,对每个知识点讲解很到位,不多不少。对初学者来说,力道刚刚好。而且是全英文,对提高自己的英语水平也很有帮助。

网上有人会推荐《笨办法学Python》,我个人觉得这本书没有《A Byte of Python》好 。一般有一些编程基本,我建议直接看《A Byte of Python》。这本书的销量已经破百万了,而且在豆瓣上点评有8.8,可谓是入门级的神书.电子版大家可以在CSDN 搜一下就有,都是高清的。

2.找一个靠谱的师傅。Python编程是一个十分系统的技术体系,有时候光靠看书和网上的视频,只能是一知半解,遇到问题,没有人给你讲解其中的原理和流程,那么对于整个技术点的理解就永远不会通透。况且,编程不只是知识,还涉及到做具体的项目,在做项目中,如果有人带,进步才是最神速的。

3.多编写程序,这似乎是废话,但是确实是一句实话。学编程一定要亲身去编写,没有什么捷径。一开始哪怕你把书里面的例子一字不落敲一遍,也好过你只是去看书,而不动手。

而且学python 最好是坚持编,每天抽小半个小时,学一些知识点,不断坚持.快的话几个星期基本就能入门了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。