公司动态
别再盲目pip!Python标准库里藏着免费百宝箱
此前的两天, 带领一位刚刚开始学习的同事去制作小型的工具, 他打算随性、随意地挑选出一个人来回答问题, 没有说任何别的话语, 直接就敲击了一行内容:pip install randompicker我拦住他让他换成这个import random names [张三, 李四, 王五, 李华] print(random.choice(names))他愣了一下这也能用我还以为得装个库。这并非只是他个人所存在的误区, 好多新手将pip视作无所不能的钥匙, 遇见事情首先进行装包, 然而却并不清楚, 在装好的那个时刻, 已然于你电脑之中塞进去了一个极为庞大的“出厂工具箱”, 这个“出厂工具箱”便是标准库。记住这一点: 那些跟着一块儿装到你电脑上的模块才是标准库模块, 它们不需要联网, 不需要下载, 不需要安装只要打开解释器就能够使用。一、模块其实分三家人很多人被模块两个字吓住其实 里的模块就三类标准库模块, 是由官方制作出品的, 是有买就会赠送的那种, 就像 os 这样的, 同理还有 time 这样的。自定义板块, 是你亲自撰写的.py材料, 不管怎样去摆弄都可以。第三方模块, 是别人写好后放置在网上的, 需要依靠pip进行安装, 例如 、。此篇只谈论第一家之人, 缘其极易被忽视, 却又绝不该被忽视, 你每日寻觅的轮子, 极有可能官方早已制造好了。二、去哪找别背查字典就行标准库里所含物品多到超乎想象, 在其中跟数学有关的那一栏, 仅仅光是进到里面, 便呈现出一片密密麻麻的景象, 即便滚动很久进度条, 也仅仅向前行进一小段罢了。要是期望全部背诵下来, 那无疑是在为难自己。正确姿势是查文档。两条路都给你指明白第一条前往官网, 接着进入Docs一栏, 然后找到教程, 再往下翻动页面直到中间的那一个部分, 整个段落所罗列的全部都是标准库, 并且还能够切换成中文。第二条更加厉害的, 称作 Index全局模块索引, 它会将所有模块依照字母 A 到 Z 的顺序排列好。倘若在其他人的代码里出现了一个陌生的模块, 那么你可以直接依据首字母进行查询, 在三秒之内就能确定它的用途是什么。做这样的类比: 这恰似新华字典的部首目录那般。你并非要把整册字典都背诵下来, 只需晓得“去什么地方翻找”, 碰到不认识的字当下查找当下使用, 如此效率反倒为最高呢。三、挑几个常用的现场拆给你看光说不练假把式挑六个最能打的现场演示。1. copy——拷贝对象是深度拷贝以及浅度拷贝的老相识了, 专门整治“我修改了副本后, 原件居然也跟变化了”这种好似奇异灵异的事件。2. os——跟操作系统打交道建文件夹、拿路径、管文件都归它管。比如用代码建个目录import os os.mkdir(demo) # 当前目录凭空多出个 demo 文件夹3. ——随机数专业户在其之前把人抽出来弄出这般示例的正是这东西, 再额外增添一个将牌洗动的成效, 用来搞抽奖以及打乱原本的次序时会特别便利顺手:import random names [张三, 李四, 王五, 李华] random.shuffle(names) # 原地打乱没有返回值 print(names)跑一次一个顺序张三可能从第一位掉到第三位这才是真随机。4. time——时间相关最常用的俩歇两秒再干活拿当前时间做日志。import time time.sleep(2) # 程序睡两秒 print(time.strftime(%H:%M:%S)) # 当前时间24小时制 print(time.strftime(%I:%M:%S %p)) # 12小时制带 AM/PM代表着小时的是%H, 反映分钟的是%M, 体现秒数的是%S, 所取用的皆是英文首字母, 记住这样子去记, 要比方才死记格式串着实轻松了许多、想要区分上午和下午, 添加一个%p,, 它就会自地去为你标注AM或者PM。5. math——数学计算开方、绝对值张口就来import math print(math.sqrt(8)) # 8 开平方 print(math.fabs(-11.2)) # 取绝对值得到 11.26. sys——管 解释器自己想看看你现在跑的是哪个版本一行搞定import sys print(sys.version) # 比如 3.13.4四、一个冷知识标准库里还分亲儿子和干儿子这片归为加分内容行列, 领会了的话你于新手群体中可进行一番展示。标准库内那些类别的模块, 实际上还划分成两股流向呐:例如像time、math、sys这类, 其在底层是运用C语言编写而成的, 在江湖中被称作内置模块。它们工作时速度快, 且十分贴近系统, 然而却存在着一个怪脾气——当你打印它们的属性时会直接出现报错的情况, 这是由于它们根本就不会让你知晓源码究竟在何处。并且, copy、os、这些是纯粹手写而成的, 被称作非内置模块。你去打印 copy., 它会规规矩矩地告诉你: “我处于 C 盘 Files 下的 lib 文件夹当中, 名为 copy.py。”把那个文件打开, 整个屏幕都是正儿八经的实现代码。新手极易踏入的陷阱: 于其中按住Ctrl时点击time一下, 弹出个time.py, 从而以为寻觅到源码了。实际上那是“存根文件”, 其里全是注释外加一行pass, 仅是告知有哪些方法以及参数是怎样的, 真正的C语言实现根本不会让你瞧见。它的路径在自身的目录里, 并非在的lib里, 千万别被误导了。提到这儿你兴许得问, 这跟我编写代码存在啥样的关联? 说老实话, 不存在啥关联。甭管它是内置的还是非内置的, 反正统统都是标准库, 你尽管去拿来使用, 不会有任何人来阻拦你的。晓得这层区别, 纯粹是为了让你往后看其他人员代码的时候, 能够少一些那种“这个模块是从哪儿来的”这般的困惑而已。五、最后说句实在话在标准库这一章节之中, 老师讲解完毕以后, 总会补上这么一句: 稍微提及一下就好, 不要去死记硬背。因为当真正到去做项目的时候, 还有去阅读别人编写的复杂代码之时, 你就会发觉“原来啊, time模块居然还能够有着这样的使用方法”——在那一个时刻, 你所应该去做的并非是拍打自己的大腿, 而是要去翻看官方所给出的文档。那么, 对于这篇文章而言, 你倘若只能带走其中一句话, 那就足够了: 在下次你打算使用pip之前, 要先停顿三秒钟, 去认真思索一下, 是不是本就早在先前就已经白白馈赠给你这个功能了。那一座如同百宝箱般的存在, 其门一直保持敞开状态, 只是在此之前, 有数量众多的人, 在进入这扇门之前, 却先行跑出去, 花费钱财购买了一个与之相同的东西。存留这篇文章, 往后再有他人询问“标准库究竟是什么”, 径直抛给他。