当前位置: 首页 > 科技观察

分享一些提高编程效率的轮子

时间:2023-03-13 04:07:21 科技观察

这里从字母A到Z,有的属于标准库,可以直接导入使用,有的属于第三方库,需要pip之后使用安装。1.allorany在Python中如此流行的一个重要原因是Python代码具有人类可读性和生动性,例如allorany的用法:x=[True,True,False]ifany(x):print("AtleastoneTrue")ifall(x):print("NotoneFalse")ifany(x)andnotall(x):print("AtleastoneTrueandoneFalse")上面的代码,相信大家完全不用注释也能看懂。不要忘记使用。2.bashplotlib[1],顾名思义,可以在bash控制台下画图,例如🌰:现在我们有一个文本文件,里面有一列数字,如何快速统计,直接使用plot_histIn[17]:!head-n5data/exp.txt1.125781958760.160262380210.03921178758430.9684288645790.334430039433In[18]:frombashplotlib.histogramimportplot_hist...:In[19]:plot/shidatatuet54=Sum2o380|o356|o332|o309|o285|o261|oo238|oo214|oo190|oo166|oo143|oo119|ooo95|ooo72|oooo48|oooo24|oooo1|oooooooooooo----------------------------------------------|总结|----------------------------------|观察:1000||最小值:0.001718||平均值:0.988786||最大值:6.552654|--------------------------------In[20]:也可以直接使用命令行:(py38env)?exampleshist--filedata/exp.txt451|o427|o403|o380|o356|o332|o309|o285|o261|oo238|oo214|oo190|oo166|oo143|oo119|ooo95|ooo72|oooo48|oooo24|oooooo1|oooooooooo-----------------------------------------------|总结|---------------------------------|观察:1000||最小值:0.001718||平均值:0.988786||maxvalue:6.552654|------------------------------------(py38env)?示例也可以使用scatter来绘制x、y坐标,详情请访问bashplotlib文档[2]3、collectionsPython的基本数据类型非常有用,但有时不能像我们想要的那样快速初始化。例如,我想要一个值为列表的字典。定义完成后想直接插入数据怎么办?通常:my_dict={}if'key'inmy_dict:my_dict['key'].append('something')else:my_dict['key']=['something']有了集合,可以简化成这样:fromcollectionsimportdefaultdictmy_dict=defaultdict(list)my_dict['key'].append('something')里面有很多有用的类,比如:详细教程访问Python官方文档[3]。4.dir这是一个非常有用的自省功能。如果你想查看Python类的内部属性,不要忘记dir函数。例如,如果我想知道字符串中有哪些内置函数,我可以这样做:>>>dir("hello")['__add__','__class__','__contains__','__delattr__','__dir__','__doc__','__eq__','__format__','__ge__','__getattribute__','__getitem__','__getnewargs__','__gt__','__hash__','__init__','__init_subclass__','__iter__','__le__','__len__','__lt__','__mod__','__mul__','__ne__','__new__','__reduce__','__reduce_ex__','__repr__','__rmod__','__rmul__','__setattr__','__sizeof__','__str__','__subclasshook__','capitalize','casefold','center','count','encode','endswith','expandtabs','find','format','format_map','index','isalnum','isalpha','isascii','isdecimal','isdigit','isidentifier','islower','isnumeric','isprintable','isspace','istitle','isupper','join','ljust','lower','lstrip','maketrans','partition','replace','rfind','rindex','rjust','rpartition','rsplit','rstrip','split','splitlines','startswith','strip','swapcase','title','translate','upper','zfill']5.如果你想使用表情符号python在字符界面下打印一个表情包,别忘了这个:pipinstallemoji6,from__future__import如果你想用未来的功能,是的,比如你现在用的是Python2,但是你想用Python3的打印功能,你可以!from__future__importprint_functionprint("HelloWorld!")7.如果geopy要处理地理位置信息,可以用这个。这是谷歌的api接口。需要申请appkeypipinstallgeopyfromgeopyimportGoogleV3place="suzhou"location=GoogleV3().geocode(place)print(location.address)print(location.location)8.howdoi你在终端编程。这时候你想看看git的undocommits怎么用。如果不想离开终端,可以直接在终端查询StackOverflow:$pipinstallhowdoi$howdoiundocommitsingithowdoi会抓取StackOverflow顶部的答案偶尔可能不是最好的,但足以让你保持专注。记得用英文关键字搜索。9.inspectPython的inspect模块非常适合理解代码幕后发生的事情。你甚至可以自己检查!下面的代码示例使用inspect.getsource()来打印它自己的源代码。它还使用inspect.getmodule()来打印定义模块的模块。最后一行代码打印出它自己的行号。10.map简单来说,map函数的任务就是分发任务。x=[1,2,3]y=map(lambdax:x+1,x)#printsout[2,3,4]print(list(y))11、newspaper3k如果需要获取新闻、文章、文本元数据(metadata)用于自然语言训练。这才是正确的使用方法,可以大大提高你抓取网页的效率。$pipinstallnewspaper3k>>>fromnewspaperimportArticle>>>url='http://www.bbc.co.uk/zhongwen/simp/chinese_news/2012/12/121210_hongkong_politics.shtml'>>>a=Article(url,language='zh')#Chinese>>>a.download()>>>a.parse()>>>print(a.text[:150])香港行政长官梁振英迫于各方压力,就其豪宅非法建造(Unauthorizedconstruction)一事,向立法会发表声明,接受质询,并向香港市民致歉。梁振英周二(12月10日)在问答会开始致辞时致歉,但强调他无意、无动机隐瞒违章建筑问题。一些亲北京阵营成员对梁振英的道歉表示欢迎,认为香港人应该接受。不过,这些成员也质疑梁振英的道歉>>>print(a.title)香港行政长官梁振英就违建事件道歉。更多用法请参考newspaper3k文档[4]。12、pprint的全称是prettyprint,意思是漂亮的打印。比如对于一个复杂的字典,print的效果是这样的:In[16]:print(users){'results':[{'gender':'male','name':{'title':'Mr','first':'Fred','last':'Cooper'},'location':{'street':{'number':681,'name':'VictoriaStreet'},'city':'索尔兹伯里','state':'GreaterManchester','country':'UnitedKingdom','postcode':'P1I3XR','coordinates':{'latitude':'5.9123','longitude':'-22.2206'},'timezone':{'offset':'-2:00','description':'Mid-Atlantic'}},'email':'fred.cooper@example.com','login':{'uuid':'5261fb69-bc91-46ed-9e66-a4f6f51ff2ff','用户名':'greenkoala692','密码':'teaser','salt':'SVMfx7Z1','md5':'e1d344cd5998cce8affbbdbeec358052','sha1':'083f8b9fb7e3271293af8d058fdf919fe690fb1a','sha256':'112e2d6838871ae2ca8aefb90c33f4850a537ee4d0d36c6f66bbcb5ed17b5da7'},'dob':{'date':'1959-12-04T14:20:29.781Z','age':62},'registered':{'date':'2019-09-06T13:18:11.009Z','age':2},'phone':'0169776452','cell':'0794-684-745','id':{'name':'NINO','value':'NC886368Q'},'picture':{'large':'https://randomuser.me/api/portraits/men/40.jpg','medium':'https://randomuser.me/api/portraits/med/men/40.jpg','thumbnail':'https://randomuser.me/api/portraits/thumb/men/40.jpg'},'nat':'GB'}],'info':{'seed':'48254d6ef48036b0','results':1,'page':1,'version':'1.3'}}而pprint的效果是有层次的:In[19]:frompprintimportpprintIn[20]:pprint(users){'info':{'page':1,'results':1,'种子':'48254d6ef48036b0','版本':'1.3'},'结果':[{'细胞':'0794-684-745','dob':{'年龄':62,'日期':'1959-12-04T14:20:29.781Z'},'email':'fred.cooper@example.com','性别':'男','id':{'name':'NINO','value':'NC886368Q'},'location':{'city':'Salisbury','coordinates':{'latitude':'5.9123','longitude':'-22.2206'},'country':'UnitedKingdom','postcode':'P1I3XR','state':'GreaterManchester','street':{'name':'VictoriaStreet','number':681},'timezone':{'description':'Mid-Atlantic','offset':'-2:00'}},'login':{'md5':'e1d344cd5998cce8affbbdbeec358052','password':'teaser','salt':'SVMfx7Z1','sha1':'083f8b9fb7e3271293af8d058fdf919fe690fb1a','sha256':'112e2d6838871ae2ca8aefb90c33f4850a537ee4d0d36c6f66bbcb5ed17b5da7','用户名':'greenkoala692','uuid':'5261fb69-bc91-46ed-9e66-a4f':'F',first'6f51}last':'Cooper','title':'Mr'},'nat':'GB','phone':'0169776452','picture':{'large':'https://randomuser.me/api/portraits/men/40.jpg','medium':'https://randomuser.me/api/portraits/med/men/40.jpg','thumbnail':'https://randomuser.me/api/portraits/thumb/men/40.jpg'},'registered':{'age':2,'date':'2019-09-06T13:18:11.009Z'}}]}在[21]中:是不是清爽多了?13、queuequeue模块是标准库实现的同步队列类,实现了多生产者多消费者队列,特别适用于多线程间的安全交互消息。里面有三个很常用的队列:Queue、LifoQueue、PriorityQueue。这些类在编程中的重要性我就不多说了,leetCode做一下你就知道了。这里[5]有一些如何使用它的例子。14.shPython是一种很棒的脚本语言,有时使用os和subprocess会有点头疼。sh库提供了一种巧妙的替代方法,可以像调用普通程序一样调用任何程序,这对于在Python中自动执行任务非常有用。pipinstallshimportsh.pwd()sh.mkdir('new_folder')sh.touch('new_file.txt')sh.whoami()sh.echo('Thisisgreat!')15.uuidUUID全称:UniversallyUniqueIdentifier,其中是全球唯一的标识码,通常用作数据库的主键。in[26]:importuuid...:user_id=uuid.uuid4()...:print(user_id)12d0957b-18e5-4a4a-b5ee-d38e5f2789ce上面的代码会随机生成128个二进制数字,基本不可能重复,大家可以放心使用,就算重复了,再生成一个就好了。16.venvPython3自带创建虚拟环境的模块,无需单独安装virtualenv。python-mvenvmy-projectsourcemy-project/bin/activatepipinstallall-the-modules17。YAMLYAML的全称是“YAMLAin'tMarkupLanguage”,意思是YAML不是一种标记语言。它是一种数据格式化语言,是JSON的超集。与JSON不同的是,它可以存储更复杂的对象并引用自身的元素,还可以写注释,特别适合写配置文件。PyYAML模块使您能够将YAML与Python结合使用。安装方法:pipinstallpyyaml例如我们有一段yaml格式的文本,可以快速转换成Python对象:In[23]:importyamlIn[24]:document="""...:a:1。..:b:...:c:3...:d:4...:"""In[25]:yaml.load(document,Loader=yaml.FullLoader)Out[25]:{'a':1,'b':{'c':3,'d':4}}In[26]:最后,以上是17个非常有用的Python模块或库,可以大大提高你的效率后续编程。当然,Python有很多类库,你也会在盒子底部有一些工具库。欢迎在下方留言,分享你喜欢的Python库或者你需要的工具库,一起讨论学习。