|
库就是别人已经写好了的代码,可以让我们直接拿来用。一个编程语言能不能流行起来,一方面取决于语法是否简单方便容易学习,一方面取决于生态是否完备。所谓的“生态” 指的就是语言是否有足够丰富的库,来应对各种各样的场景。在实际开发中,也并非所有的代码都自己手写,而是要充分利用现成的库,简化开发过程。按照库的来源,可以大致分成两大类:标准库:Python自带的库。只要安装了Python就可以直接使用。第三方库:其他人实现的库。要想使用,需要额外安装。我们自己也可以实现“第三方库” 发布出去,交给别人来使用。一、标准库1、认识标准库Python自身内置了非常丰富的库。在Python官方文档上可以看到这些库的内容:ThePythonStandardLibrary—Python3.10.13documentation主要是下面这些部分:内置函数(如print,input等)内置类型(针对int,str,bool,list,dict等类型内置的操作)文本处理时间日期数学计算文件目录数据存储(操作数据库,数据序列化等)加密解密操作系统相关并发编程相关(多进程,多线程,协程,异步等)网络编程相关多媒体相关(音频处理,视频处理等)图形化界面相关.......不需要把这些库的内容都背下来,只要大概知道里面有什么,需要用的时候能够找到即可。2、使用import导入模块使用import可以导入标准库的一个模块。import[模块名]所谓“模块”,其实就是一个单独的.py文件。使用import语句可以把这个外部的.py文件导入到当前.py文件中,并执行其中的代码。3、日期计算(代码示例)输入任意的两个日期,计算两个日期之间隔了多少天。使用import语句导入标准库的datetime模块使用datetime.datetime构造两个日期,参数使用“年,月,日” 这样的格式。两个日期对象相减,即可得到日期的差值。关于datetime的更多操作,可以参考官方文档:datetime—Basicdateandtimetypes—Python3.12.4documentation4、字符串操作(代码示例)字符串是Python的内置类型,字符串的很多方法不需要导入额外的模块,即可直接使用。(1)剑指offer58—— 翻转单词顺序对应题目链接:151.反转字符串中的单词-力扣(LeetCode)输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"Iamastudent.",则输出"student.aamI"。使用str的split方法进行字符串切分,指定空格为分隔符,返回结果是一个列表。使用列表的reverse方法进行逆序。使用str的join方法进行字符串拼接,把列表中的内容进行合并。defreverseWords(s): tokens=s.split() tokens.reverse() return''.join(tokens)print(reverseWords('Iamastudent.'))(2)leetcode796—— 旋转字符串对应题目链接:796.旋转字符串-力扣(LeetCode)给定两个字符串,s和goal。如果在若干次旋转操作之后,s能变成goal,那么返回true。s的旋转操作就是将s最左边的字符移动到最右边。例如,若s='abcde',再旋转一次之后结果就是'bcdea'。使用len求字符串的长度。如果长度不相同,则一定不能旋转得到。将s和自己进行拼接,然后直接使用in方法来判定goal是否是s+s的子串。defrotateString(s,goal): returnlen(s)==len(goal)andgoalins+sprint(rotateString('abcde','cdeab'))(3)leetcode2255—— 统计是给定字符串前缀的字符串数目 对应题目链接:2255.统计是给定字符串前缀的字符串数目-力扣(LeetCode)给你一个字符串数组words和一个字符串s,其中words[i]和s只包含小写英文字母。请你返回words中是字符串s前缀的字符串数目。一个字符串的前缀是出现在字符串开头的子字符串。子字符串是一个字符串中的连续一段字符序列。依次遍历words中的字符串。直接使用字符串的startswith方法即可判定当前字符串是否是s的前缀。defcountPrefixes(words,s): res=0 #符合要求字符串个数 forwordinwords: ifs.startswith(word): res+=1 returnresprint(countPrefixes(["a","b","c","ab","bc","abc"],"abc"))关于字符串的更多操作,参考官方文档:Built-inTypes—Python3.12.4documentation(4)文件查找工具(代码示例)指定一个待搜索路径,同时指定一个待搜索的关键字。在待搜索路径中查找是否文件名中包含这个关键字。使用os.walk即可实现目录的递归遍历。os.walk返回一个三元组,分别是当前路径,当前路径下包含的目录名(多个),当前路径下包含的文件名(多个)。os.walk每次调用都能自动的去针对子目录进行递归的操作,只需要使用上述循环就可以把所有的路径都获取出来。关于os模块的更多操作,参考官方文档:os—Miscellaneousoperatingsysteminterfaces—Python3.12.4documentation二、第三方库1、认识第三方库第三方库就是别人已经实现好了的库,我们可以拿过来直接使用。虽然标准库已经很强大了,但是终究是有限的。而第三方库可以视为是集合了全世界Python程序员的智慧,可以说是几乎无穷无尽。当我们遇到一个需求场景的时候,如何知道、该使用哪个第三方库呢?就需要用到下面几个网站了:当我们确定了该使用哪个第三方库之后,就可以使用pip来安装第三方库了。2、使用pippip是Python内置的包管理器,所谓包管理器就类似于我们平时使用的手机app应用商店一样。第三方库有很多,是不同的人、不同的组织实现的。为了方便大家整理,Python官方提供了一个网站PyPIhttps://pypi.org/来收集第三方库。其他大佬写好的第三方库也会申请上传到PyPI上,这个时候就可以方便的使用pip工具来下载PyPI上的库了。pip在我们安装Python的时候就已经内置了,无需额外安装。pip是一个可执行程序,就在Python的安装目录中。打开cmd,直接输入:pip。如果显示以下帮助信息,说明pip已经准备就绪。如果最开始按照要求在安装Python的时候勾选了:那么pip就是默认可用的。如果提示:'pip'不是内部或外部命令,也不是可运行的程序或批处理文件。则说明没有正确的把pip加入到PATH中,可以手动把pip所在的路径加入到PATH环境变量中。可参考:windows环境下面配置pip环境变量-简书(jianshu.com)或者卸载重装Python,记得勾上上述选项,也许是更简单的办法。使用命令:pipinstall[库名]即可安装第三方库。注意:这个命令需要从网络上下载,使用时要保证网络畅通。安装成功后,即可使用import导入相关模块,即可进行使用。如果使用pip安装完第三方库之后,在PyCharm中仍然提示找不到对应的模块,则检查Settings->roject->ythonInterpreter,看当前Python解释器设置的是否正确。(如果一个机器上安装了多个版本的Python,容易出现这种情况)3、生成二维码(代码示例)所谓二维码本质上就是使用黑白点阵表示一个字符串。我们日常使用的二维码内部一般是一个URL,扫码后会自动跳转到对应的地址,从而打开一个网页。可以把任意的字符串制作成一个二维码图片。(1)通过搜索引擎,确定使用哪个库得到情报,qrcode这个库可以用来生成二维码。(2)查看qrcode文档在PyPI上搜索qrcode:点击则进入qrcode的详情页。文档开头描述了如何安装qrcode:页面中央位置描述了qrcode库的使用方法:(3)使用pip安装在终端输入命令:pipinstallqrcode[pil]注意:pip安装的时候可能会有警告,提示使用的pip版本太低。这个警告可以不用处理,不影响正常使用。 (4)编写代码按照文档给出的示例,模仿一段代码:运行完毕后得到结果如下:使用微信或者其他工具扫码,即可看到二维码内容。4、操作Excel(代码示例)读取excel可以使用xlrd模块,文档地址:xlrd—xlrd2.0.1documentation修改excel可以使用xlwt模块,文档地址:xlwtdocumentation—xlwt1.3.0documentation此处以xlrd为例,演示 Excel的基本操作。需求有如下 Excel表格d:/test.xlsx求100班的同学的平均分。虽然Excel自身支持很强大的功能,也可以求和、求平均值。但是如果是稍微复杂的需求,操作起来可能就没那么方便了。(1)安装xlrdpipinstallxlrd==1.2.0注意:此处要指定版本号安装.如果不指定版本号,则安装最新版.最新版里删除了对xlsx格式文件的支持。(2)编写代码使用open_workbook方法打开一个 Excel文件。使用xlsx.sheet_by_index(0)获取到0号标签页。使用table.nrows获取到表格的行数。使用table.cell_value(row,col)获取到表格中row,col位置的元素值。5、“程序员鼓励师”(代码示例)监听键盘按键,每按键20下就自动播放一个音频,鼓励一下辛苦搬砖的每一个程序员。(1)安装第三方依赖pynput用于监听键盘按键。(注意版本不要用最新)playsound用于播放音频。pipinstallpynput==1.6.8pipinstallplaysound==1.2.2(2)准备音频文件此处准备了一个ding.mp3放到和py代码同级目录中:(3)编写代码使用fromimport的格式直接导入模块中的指定对象 / 函数。使用keyboard.Listener监听键盘按键,其中on_release会在释放按键时被调用。使用listener.start启动监听器.为了防止程序直接退出,使用listener.join让程序等待用户按键。使用count计数,每隔10次,调用playsound播放音频文件。运行程序,即可感受到效果。(4)改进代码上述代码在执行过程中,会感觉到播放音频会导致按键卡顿,可以使用多线程解决这个问题。使用threading.Thread引入多线程类。使用Thread的构造函数来构造一个线程。target表示线程要执行的任务,args表示target中要调用函数的参数。使用Thread.start()启动线程。6、学生管理系统(综合案例)(1)需求说明实现一个命令行版本的学生管理系统。功能:新增学生显示学生查找学生删除学生存档到文件(2)创建入口函数使用一个全局列表students表示所有学生信息。使用menu函数和用户交互,这是一个自定义函数。使用insert,show,find,delete这几个自定义函数完成增删查操作。使用sys.exit实现程序退出。(3)实现菜单函数(4)实现增删查操作A. 新增学生B. 显示学生C.查找学生D.删除学生(5)加入存档读档A. 约定存档格式将存档文件放到d:/record.txt文件中,并且以行文本的方式来保存学生信息,格式如下:学号\t名字\t性别\t班级学号\t名字\t性别\t班级学号\t名字\t性别\t班级每个同学占一行。每个同学的信息之间使用\t制表符进行分隔。B. 实现存档函数在insert和delete末尾,调用save函数进行存档。C. 实现读档函数在main函数开头的地方,调用load加载存档:(6)演示测试过程(7)打包成exe程序发布当前虽然已经实现了一个管理系统,但是.py的文件只能在安装了Python环境的机器上运行。为了能够更好的部署到其他主机上,可以借助pyinstaller来把Python程序打包成exe程序。A. 安装pyinstallerpipinstallpyinstallerB. 打包程序-F表示打包成单个exe(不带动态库)pyinstaller-F学生管理系统.py打包完成之后:此时就可以把这个程序拷贝给其他机器使用了,无需Python环境也可运行。三、扩展1、pythoncookbookpython经典进阶书籍,针对各种典型场景提供了一些解决方案。2、awesome-pythonPython的一些非常实用的程序库:awesome-python:awesome-python的中文版(gitee.com)3、500LinesorLess使用简短的Python代码来实现一些有意思的程序:aosabook/500lines:500LinesorLess(github.com)
|
|