首页 > 编程语言 >Python标准库的入口

Python标准库的入口

时间:2023-10-24 09:56:36浏览次数:27  
标签:操作系统 Python 可以 入口 标准 库中 socket

Python有一套很有用的标准库(standard library)。标准库会随着Python解释器,一起安装在你的电脑中的。它是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。

 

我将根据我个人的使用经验中,挑选出标准库三个方面的包(package)介绍:

  • Python增强

  • 系统互动

  • 网络

 

第一类:Python增强

Python自身的已有的一些功能可以随着标准库的使用而得到增强。

 

1) 文字处理

Python的string类提供了对字符串进行处理的方法。更进一步,通过标准库中的re包,Python可以用正则表达式(regular expression)来处理字符串。

正则表达式是一个字符串模板。Python可以从字符中搜查符合该模板的部分,或者对这一部分替换成其它内容。比如你可以搜索一个文本中所有的数字。正则表达式的关键在于根据自己的需要构成模板。

此外,Python标准库还为字符串的输出提供更加丰富的格式, 比如: string包,textwrap包。

 

2) 数据对象

不同的数据对象,适用于不同场合的对数据的组织和管理。Python的标准库定义了表和词典之外的数据对象,比如说数组(array),队列(Queue)。一个熟悉数据结构(data structure)的Python用户可以在这些包中找到自己需要的数据结构。

此外,我们也会经常使用copy包,以复制对象。

 

3) 日期和时间

日期和时间的管理并不复杂,但容易犯错。Python的标准库中对日期和时间的管理颇为完善(利用time包管理时间,利用datetime包管理日期和时间),你不仅可以进行日期时间的查询和变换(比如:2012年7月18日对应的是星期几),还可以对日期时间进行运算(比如2000.1.1 13:00的378小时之后是什么日期,什么时间)。通过这些标准库,还可以根据需要控制日期时间输出的文本格式(比如:输出’2012-7-18‘还是'18 Jul 2012')

 

4) 数学运算

标准库中,Python定义了一些新的数字类型(decimal包, fractions包), 以弥补之前的数字类型(integer, float)可能的不足。标准库还包含了random包,用于处理随机数相关的功能(产生随机数,随机取样等)。math包补充了一些重要的数学常数和数学函数,比如pi,三角函数等等。

(尽管numpy并不是标准库中的包,但它的数组运算的良好支持,让它在基于Python的科研和计算方面得到相当广泛的应用,可以适当关注。)

 

5) 存储

之前我们的快速教程中,只提及了文本的输入和输出。实际上,Python可以输入或输出任意的对象。这些对象可以通过标准库中的pickle包转换成为二进制格式(binary),然后存储于文件之中,也可以反向从二进制文件中读取对象。

此外,标准库中还支持基本的数据库功能(sqlite3包)。XML和csv格式的文件也有相应的处理包。

  

第二类:系统互动

系统互动,主要指Python和操作系统(operate system)、文件系统(file system)的互动。Python可以实现一个操作系统的许多功能。它能够像bash脚本那样管理操作系统,这也是Python有时被成为脚本语言的原因。

 

1) Python运行控制

sys包被用于管理Python自身的运行环境。Python是一个解释器(interpreter), 也是一个运行在操作系统上的程序。我们可以用sys包来控制这一程序运行的许多参数,比如说Python运行所能占据的内存和CPU, Python所要扫描的路径等。另一个重要功能是和Python自己的命令行互动,从命令行读取命令和参数。

 

2) 操作系统

如果说Python构成了一个小的世界,那么操作系统就是包围这个小世界的大世界。Python与操作系统的互动可以让Python在自己的小世界里管理整个大世界。

os包是Python与操作系统的接口。我们可以用os包来实现操作系统的许多功能,比如管理系统进程,改变当前路径(相当于’cd‘),改变文件权限等,建立。但要注意,os包是建立在操作系统的平台上的,许多功能在Windows系统上是无法实现的。另外,在使用os包中,要注意其中的有些功能已经被其他的包取代。

我们通过文件系统来管理磁盘上储存的文件。查找、删除,复制文件,以及列出文件列表等都是常见的文件操作。这些功能经常可以在操作系统中看到(比如ls, mv, cp等Linux命令),但现在可以通过Python标准库中的glob包、shutil包、os.path包、以及os包的一些函数等,在Python内部实现。

subprocess包被用于执行外部命令,其功能相当于我们在操作系统的命令行中输入命令以执行,比如常见的系统命令'ls'或者'cd',还可以是任意可以在命令行中执行的程序。

 

4) 线程与进程

Python支持多线程(threading包)运行和多进程(multiprocessing包)运行。通过多线程和多进程,可以提高系统资源的利用率,提高计算机的处理速度。Python在这些包中,附带有相关的通信和内存管理工具。此外,Python还支持类似于UNIX的signal系统,以实现进程之间的粗糙的信号通信。

 

第三类:网络

现在,网络功能的强弱很大程度上决定了一个语言的成功与否。从Ruby, JavaScript, php身上都可以感受到这一点。Python的标准库对互联网开发的支持并不充分,这也是Django等基于Python的项目的出发点: 增强Python在网络方面的应用功能。这些项目取得了很大的成功,也是许多人愿意来学习Python的一大原因。但应注意到,这些基于Python的项目也是建立在Python标准库的基础上的。

 

1) 基于socket层的网络应用

socket是网络可编程部的底层。通过socket包,我们可以直接管理socket比如说将socket赋予给某个端口(port),连接远程端口,以及通过连接传输数据。我们也可以利用SocketServer包更方便地建立服务器。

通过与多线程和多进程配合,建立多线程或者多进程的服务器,可以有效提高服务器的工作能力。此外,通过asyncore包实现异步处理,也是改善服务器性能的一个方案。

 

2) 互联网应用

在实际应用中,网络的很多底层细节(比如socket)都是被高层的协议隐藏起来的。建立在socket之上的http协议实际上更容易也更经常被使用。http通过request/responce的模式建立连接并进行通信,其信息内容也更容易理解。Python标准库中有http的服务器端和客户端的应用支持(BaseHTTPServer包; urllib包, urllib2包), 并且可以通过urlparse包对URL(URL实际上说明了网络资源所在的位置)进行理解和操作。

 

以上的介绍比较粗糙,只希望能为大家提供一个了解标准库的入口。欢迎大家一起分享标准库的使用经验。

标签:操作系统,Python,可以,入口,标准,库中,socket
From: https://www.cnblogs.com/delishcomcn/p/17784039.html

相关文章

  • python基础
    python环境搭建1、下载安装包-3.x-2.x下载官网:https://python.org/2、安装(傻瓜式安装,选择路径时选择下,其他都默认即可)python的交互界面再命令行输入python,进入到python的交互页面;再交互页面输入python命令,python解释器就会立即执行。pythonjingjing.py执行python文......
  • Python第八课——类
    将函数和数据封装起来,形成类,用类再来创建对象。比如我创建了小狗这一个类,然后创造了名为William,年龄6岁的小狗,这只狗就是对象。一、创建和使用类1、创建dog类以下是Python的类代码的基本结构:classClassName:#一些类的属性和方法def__init__(self,arg1,arg2,...):......
  • 【python笔记】杂乱版
    numpy.tile的作用importnumpyasnp#重复一个标量值scalar=5result1=np.tile(scalar,3)print(result1)#输出:[5,5,5]#重复一个数组arr=[1,2,3]result2=np.tile(arr,2)print(result2)#输出:[1,2,3,1,2,3]#在两个维度上进行不同次数的重......
  • Visual Studio 2017标准库、 Windows SDK 10标准库目录
    VisualStudio2017标准库VC\Tools\MSVC\14.16.27023\include目录包含了VisualC++14.16.27023版本的标准库头文件(也就是VC++2017版本),包括、、等常用头文件。这些头文件定义了各种数据类型、函数、类等,供程序员使用。如果你使用VisualStudio2017或更高版本进行开发......
  • 力扣每日一题+python知识点回顾(六)
    力扣题目:老人的数目(题号:2678)给你一个下标从0开始的字符串details。details中每个元素都是一位乘客的信息,信息用长度为15的字符串表示,表示方式如下:前十个字符是乘客的手机号码。接下来的一个字符是乘客的性别。接下来两个字符是乘客的年龄。最后两个字符是乘客的座位......
  • Python 数组和列表:创建、访问、添加和删除数组元素
    Python没有内置支持数组,但可以使用Python列表来代替。数组本页将向您展示如何使用列表作为数组,但要在Python中使用数组,您需要导入一个库,比如NumPy库。数组用于在一个变量中存储多个值:示例,创建一个包含汽车名称的数组:cars=["Ford","Volvo","BMW"]什么是数组?数组是......
  • 力扣每日一题+python知识点回顾(五)
    力扣题目:做菜顺序(题号:1402)一个厨师收集了他n道菜的满意程度satisfaction,这个厨师做出每道菜的时间都是1单位时间。一道菜的「like-time系数」定义为烹饪这道菜结束的时间(包含之前每道菜所花费的时间)乘以这道菜的满意程度,也就是time[i]*satisfaction[i]。返回厨师在准备了一......
  • Python调用C或者C++
    基本说明文件类型介绍.out是可执行文件,相当于win上的exe;.o是编译中间目标文件,相当于win上的.obj;.a是静态库,多个.o练链接得到,用于静态链接;.so是共享库,用于动态链接,相当于win上.dll可执行文件file查看文件类型ldd命令查看某个可执行文件依赖了哪些动态链接库ldd能够显示......
  • Python学习1
    syntax blocks#statements->instruction1.literal90、"ONE"2.operator3.comment4.variablestoremodifyaccess5.functiondefadd(n):#statementreturnn6.keyword Writecodeinoneofthesethreecommonways:Directly(python.exe)Progr......
  • 力扣每日一题+python知识点回顾(四)
    力扣题目:统计无向图中无法互相到达点对数(题号:2316)给你一个整数n,表示一张无向图中有n个节点,编号为0到n-1。同时给你一个二维整数数组edges,其中edges[i]=[ai,bi]表示节点ai和bi之间有一条无向边。请你返回无法互相到达的不同点对数目。示例一:输入:n=3,edges=[[0,1],[0,2......