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

你想要的Python编程技能,我都给你整理好了

时间:2023-03-15 00:05:30 科技观察

Python是世界上最好的点播编程语言之一。原因有很多:易于学习应用范围广模型和库种类繁多Python是我作为数据科学家日常生活中不可或缺的一部分。在学习Python的过程中,我学到了很多方法和技巧。在这里,我尝试用A-Z格式来做一些分享。大多数技巧都是我在日常工作中使用或偶然发现的。其中一些是在浏览Python标准库文档时发现的。我通过在PyPi中搜索找到的其他一些。但实际上,我在awesome-python.com上找到了四五个有用的技巧。这里有数百个有趣的Python工具和模块。非常值得浏览以获取灵感。所有或任何Python流行的众多原因之一是它的可读性和表现力。人们经常开玩笑说Python是可执行的伪代码。但是当你写出下面的代码时,很难反驳这个说法。x=[True,True,False]ifany(x):print("AtleastoneTrue")ifall(x):print("NotoneFalse")ifany(x)andnotall(x):print("AtleastoneTrueandoneFalse")bashplotlib要控制台中画?$pipinstallbashplotlib使用上面的命令行在控制台中绘制。集合Python具有内置的默认数据类型,但有时它们并不像您希望的那样工作。幸运的是,Python的标准库提供了集合模块,这是一个提供更多数据类型的方便的附加库。fromcollectionsimportOrderedDict,Counterx=OrderedDict(a=1,b=2,c=3)y=Counter("HelloWorld!")dir你有没有想过深入研究一个Python对象,看看它有什么属性?输入以下命令行:>>>dir()>>>dir("HelloWorld")>>>dir(dir)这是交互式运行Python时非常有用的功能,可以动态搜索对象和模块。emojiPython包含表情符号模块,就在这里!$pipinstallemoji别以为我不知道你在偷偷下载...fromemojiimportemojizeprint(emojize(":thumbs_up:"))来自_future_importPython流行的一个结果是新版本总是在开发中。新版本意味着新功能-除非版本过时,否则不要担心。_future_module允许用户通过函数导入新版本Python的特性。这就像时间旅行,或者奇怪的魔法或者什么的......为什么不from__future__importprint_functionprint("HelloWorld!")导入花括号?geopy地理知识对程序员来说可能是一个相当大的挑战,但是geopy模块使它变得更容易。$pipinstallgeopy它通过提取不同的地理编码服务API来工作,可以获取一个地方的完整街道地址、经度、纬度,甚至海拔高度。geopy还提供了一个非常有用的距离类。它支持用户首选的度量标准来计算两地之间的距离。fromgeopyimportGoogleV3place="221bBakerStreet,London"location=GoogleV3().geocode(place)print(location.address)print(location.location)howdoi遇到编程问题,不记得以前见过解决方案?需要使用StackOverflow,但又不想离开终端?那么你就需要用到这个非常好用的命令行工具howdoi$pipinstallhowdoi不管你有什么问题,它都会帮你解答。$howdoverticalaligncss$howdoiforloopinjava$howdoiundocommitsingit但请注意,它从StackOverflow上投票最多的答案中获取代码,这意味着它的答案并不总是最有用的。$howdoiexitviminspectPython的inspects模块对于理解背后的原理很有帮助。用户甚至可以在inspect模块上调用它的方法!以下代码示例使用inspect.getsource()打印其源代码。它还使用inspect.getmodule()打印定义它的模块。***一行代码打印出自己的行号。importinspectprint(inspect.getsource(inspect.getsource))print(inspect.getmodule(inspect.getmodule))print(inspect.currentframe().f_lineno)当然,除了这些琐碎的用途,inspect模块还支持了解用户代码是做什么的。用户还可以利用Inspect模块编写自文档化代码。JediJedi是一个自动完成和代码分析库。它使编写代码更快、更高效。除非你正在开发自己的IDE,否则你肯定会对使用Jedi作为编辑器插件非常感兴趣。幸运的是,它可以下载。用户可能已经在使用Jedi。IPython项目基于Jedi实现代码自动补全。**kwargs在学习任何编程语言时,一路上都有许多里程碑。了解神秘的**kwargs是学习Python的里程碑之一。字典前面的双星号允许将字典的内容作为命名参数传递给函数。字典的键是参数名,值是传递给函数的值,用户甚至不需要调用它kwargsdictionary={"a":1,"b":2}defsomeFunction(a,b):print(a+b)returnsomeFunction(**dictionary)someFunction(a=1,b=2)这在用户编写处理事先未定义的命名参数的函数时很有用。我喜欢Python编程中的列表推导式的原因之一是它的列表推导式。这些表达式使编写非常简洁的代码变得容易,读起来像自然语言。您可以在numbers=[1,2,3,4,5,6,7]evens=[xforxinnumbersifx%2is0]odds=[yforyinnumbersifynotinevens]cities=['London','Dublin','Oslo']defvisit(city):print("Welcometo"+city)forcityincities:visit(city)mapPython通过许多内置函数支持函数式编程,其中最有用的是map(),尤其是与lambda函数结合使用时。x=[1,2,3]y=map(lambdax:x+1,x)print(list(y))在上面的示例中,map()将一个简单的lambda函数应用于X中的每个元素,它返回一个地图对象类型,可以转换为一些可迭代对象,例如列表或元组newspaper3k如果您以前没有见过newspaper3k,那么请准备好被这个Python的newspaper模块震撼。报纸模块允许您从一系列搜索新闻文章和领先国际出版物的相关元数据中进行选择。您可以检索图像、文本和作者姓名。报纸模块甚至有一些内置的NLP功能。因此,如果您想在下一个项目中使用BeautifulSoup或其他DIY网络查询库,请节省时间和精力,而不是$pipinstallnewspaper3kOperator重载Python支持运算符重载,这个术语让您听起来像计算机科学家。这实际上是一个非常普遍的概念。有没有想过为什么Python支持+运算符来添加数字和连接字符串?这是实际的运算符重载。用户可以使用Python的标准运算符符号以自己特定的方式定义对象,这允许用户在与对象相关的上下文中使用它们。classThing:def__init__(self,value):self.__value=valuedef__gt__(self,other):returnsself.__value>other.__valuedef__lt__(self,other):returnsself.__valuenothingsomething>>file=open('file.txt','r')>>>print(file)这使得代码调试更容易。添加如下所示的类定义:classsomeClass:def__repr__(self):return""someInstance=someClass()print(someInstance)ShPython是一种很棒的脚本语言。使用标准操作系统和子例程库有时会令人头疼。Sh库提供了一个优雅的替代方案。它允许用户像调用函数一样调用程序,这对于自动化工作流和任务非常有用。全部来自Python。fromshimport*sh.pwd()sh.mkdir('new_folder')sh.touch('new_file.txt')sh.whoami()sh.echo('Thisisgreat!')typehintPython是动态语言,在定义变量的时候,使用函数、类时不需要指定数据类型....这种设置允许快速开发,但比简单类型错误导致的运行时错误更令人讨厌。从Python3.5开始,用户可以选择在定义函数时启用类型提示。defaddTwo(x:Int)->Int:returnx+2用户也可以定义类型别名:fromtypingimportListVector=List[float]Matrix=List[Vector]defaddMatrix(a:Matrix,b:Matrix)->Matrix:result=[]fori,rowinenumerate(a):result_row=[]forj,colinenumerate(row):result_row+=[a[i][j]+b[i][j]]result+=[result_row]返回结果x=[[1.0,0.0],[0.0,1.0]]y=[[2.0,1.0],[0.0,-2.0]]z=addMatrix(x,y)尽管类型注释是可选的,但这使代码更具可读性。Python3.5+还允许用户使用类型提示工具在运行前知道类型错误,这在大型复杂项目中是非常值得的。uuidPython标准库中的uuid模块是生成通用唯一标识符的一种快速简便的方法。importuuiduser_id=uuid.uuid4()print(user_id)它随机生成128个唯一数字。事实上,一共有可能生成的UUID。此值超过5,000,000,000,000,000,000,000,000,000,000,000,000,000。在给定集合中找到重复数字的概率非常低。即使有1万亿个UUID,重复的可能性也远低于十亿分之一。只需两行代码即可生成UUID,这太棒了!虚拟环境这是Python中我最喜欢的部分。用户可能需要同时处理多个Python项目。不幸的是,有时两个项目依赖于相同依赖项的不同版本。那么用户应该下载哪个版本的依赖库呢?幸运的是,Python支持虚拟环境,允许用户同时利用两个环境。命令行如下:python-mvenvmy-projectsourcemy-project/bin/activatepipinstallall-the-modules现在可以在一台机器上支持两个版本的Python。问题解决了!WikipediaWikipedia有一个很棒的AP??I,允许用户以编程方式访问大量的知识和信息。Wikipedia模块使访问WikipediaAPI变得非常方便。importwikipediaresult=wikipedia.page('freeCodeCamp')print(result.summary)forlinkinresult.links:print(link)类似于真正的维基百科,该模块支持多语言、页面消歧、随机页面检索,甚至donate()的方法XkcdHumour是Python的一个关键特性——毕竟,它的名字取自英国喜剧《Monty Python的飞行马戏团》,其情节在Python的大部分官方文档中都有引用。Python的幽默感不仅限于官方文档。运行以下命令行:importantgravity希望Python不要改变它的幽默风格YAMLYAML'tMarkupLanguage。它是一种数据格式化语言,是JSON的超集,与JSON的不同之处在于它可以存储更复杂的对象并引用自己的元素。用户可以编写注解,使其适用于编写配置文件。PyYAML模块允许用户在Python中使用YAML。安装命令行如下:$pipinstallpyyaml然后导入到用户项目中:importyamlPyYAML允许你存储任何数据类型的Python对象,以及任何用户定义类的实例。Zip***的Python技巧,真的很酷。你还在用两个列表组成字典吗?keys=['a','b','c']vals=[1,2,3]zipped=dict(zip(keys,vals))Zip()内置函数将多个可迭代对象作为输入并返回元组列表。每个元组列表按位置索引对输入对象的元素进行分组。用户还可以使用*zip()来解压缩对象。感谢您阅读A-Z的Python技巧-我相信您已经找到了对您的下一个项目有用的技巧。Python是一种非常多样化且发展良好的编程语言,因此我错过了Python的许多强大功能。