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.__value
