楼主: Dear_Li
727 3

[程序分享] 26个你不知道的Python技巧,打包带走! [推广有奖]

  • 0关注
  • 14粉丝

等待验证会员

博士生

64%

还不是VIP/贵宾

-

威望
0
论坛币
686 个
通用积分
7.6246
学术水平
12 点
热心指数
16 点
信用等级
2 点
经验
4905 点
帖子
186
精华
0
在线时间
246 小时
注册时间
2018-7-21
最后登录
2019-1-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
导读:Python是目前世界上最流行的编程语言之一。因为:
  • 它容易学习
  • 它用途超广
  • 它有非常多的开源支持(大量的模块和库)
本文作者 Peter Gleeson 是一名数据科学家,日常工作几乎离不开python。一路走来,他积累了不少有用的技巧和tips,现在分享给大家。这些技巧将根据其首字母按A-Z的顺序进行展示。

01 all or anyPython之所以成为这么一门受欢迎的语言一个原因是它的可读性和表达能力非常强。Python也因此经常被调侃为“可执行的伪代码”。不信你看:





02 bashplotlib
你想要在控制台绘图嘛?

现在,你的控制台中就可以有图了




3 collections
Python有一些很棒的默认数据类型,但是有时候他们并不会像你所希望的那样发挥作用。 幸运的是,Python 标准库提供了collection模块。它让你可以使用更为多样数据类型。





04 dir
面对一个Python对象,你是否曾想过可以直接看到其属性?你也许可以试试以下的代码:



这是运行Python的时候一个非常有用的功能,用于动态探索你所使用的对象和模块。更多详情,可以查看这里:
docs.python.org/3/library/f…


05 emoji
对的,你没看错!




用python来创建表情包,你也可以。






06 from future import
Python非常受欢迎,这也就导致了它的版本更新非常快,新的版本往往会有很多新特性。你不更新,就无法使用。


然而,不要害怕。future 模块可以让你导入未来版本的功能。有点像时空穿梭有木有!




07 geopy
对于程序猿来说地理可能是一个非常有挑战性的领域。但是,geopy模块则让它变得非常简单。



它通过提取一系列不同地理编码服务的api来工作,让你能够获得一个地方的完整街道地址、纬度、经度,甚至海拔。
这里面同时还包含一个有用的“距离”类别。它能使用你选定的度量去计算了两个地点之间的距离。





08 howdoi
有时候你碰到了一个编程问题,觉得自己之前明明见过它的解决方法,但是却记不起来具体是怎么样的了。于是你想要去StackOverflow上找,但又不想离开这个终端。这个时候,你需要下面这个工具——howdoi





你所遇到的任何问题都可以问它,它会尽他所能给你返回一个答案。





需要注意的是——它只从StackOverflow最顶端的答案中抓取代码。所以它给你返回的不总是最有用的信息...





09 inspect
Python的inspect模块用于收集Python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈等等。


下方的代码样例使用了 inspect.getsource() 来打印它自身的源码。同样还使用了 inspect.getmodule()来打印定义了inspect.getmodule()的模块。最后一行代码则是打印了本行代码所在的行号。在本例中,就是 4 。





nspect模块可以有效地让你知道你的代码是如何工作的,你也可以利用它来完成一些个人的源码。




10 Jedi
Jedi库是一个代码自动补齐和静态分析的库。它可以使你更快更高效地书写代码。除非你在开发自己的编辑器,否则你可能会非常喜欢将Jedi作为自己的编辑插件。


你可能已经正在使用Jedi而只是没发现。IPython项目就是利用Jedi来实现其自动补全功能。




11 **kwargs
无论你学习那种语言,在这条学习之路上总有那么一些里程碑。在Python的编程学习中,理解神秘的**kwargs语法应该算是一个重要的里程碑。


双星“**”放在字典的前面可以让你将字典的内容作为命名参数传递给函数。字典的键是参数的名字,键的值作为参数的值传递给函数。如下所示:



当你想要创建一个函数,它需要能处理事先没有定义过的参数,那么就要用到前面提到的技巧了。




12 List comprehensions
List comprehensions(列表推导式)可以说是我最喜欢的Python技巧之一。这种表达式可以让你写出像自然语言一样易于理解并且还很简洁的代码。


你可以通过这个链接了解更多关于列表推导式的用法。地址:
www.learnpython.org/en/List_Com…







13 map
Python有许多非常有用的内置函数。其中一个就是map()——特别是和lambda函数相结合的时候。



在这个例子中,map()对x中的每一个元素都应用了一个简单的lambda函数。它会返回一个map对象,这个对象可以被转化成可迭代对象,如列表或者元组。




14 newspaper3k
newspaper3k,如果你还没有见过它,那么你可能会被这个Python newspaper模块所惊艳到。
它可以让你检索到一系列国际领先出版物中的新闻和相关的元数据。你可以检索图片、文本和作者名。它甚至有一些内置的自然语言处理功能。所以,如果你正在考虑使用BeautifulSoup 或其他自制的爬虫库来应用于你的下一个项目。那么,省省时间和精力吧,你其实只需要$ pip install newspaper3k。




15 Operator overloading(操作符重载)
Python支持操作符重载。“操作符重载”其实是个简单的概念,你是否曾经想过为什么Python可以让你使用“+”操作符来同时实现加法和连接字符串?这就是操作符重载在发挥作用。
你可以定义使用Python标准操作符符号的对象,这可以让你在特定的环境中使用特定的对象,就像下方的例子一样。





16 pprint
Python的默认print函数可以满足日常的输出任务,但如果要打印更大的、嵌套式的对象,那么使用默认的print函数打印出来的内容会很丑陋。


这个时候我们就需要pprint了,它可以让复杂的结构型对象以可读性更强的格式显示。这对于经常要面对非普通数据结构的Python开发者来说是必不可少的工具。





17 Queue(队列)
Python支持多线程,它是通过标准库中的Queue模块来实现的。这个模块可以让你实现队列数据结构。这种数据结构可以让你根据特定的规则添加和检索条目。


“先进先出”(FIFO)队列可以让你按照添加对象的顺序来检索他们。“后进先出”(LIFO)队列可以让你首先访问最近添加的对象。最后,优先队列可以让你根据他们排序的顺序进行检索。




18 repr
当你定义一个类的时候,提供一个方法可以返回用来表示该类对象的可打印字符串会非常有用。例如:





这使得debug更加方便,具体的定义方式如下:







19 shsh库让你像调用方法那样调用系统中的命令。





20 Type hints(类型提示)
Python是一种动态类型语言。当你定义变量、函数、类别的时候,你不需要指定数据的类型。这可以大大提升你的开发速度,但也是有代价的。你可能会因为一个简单的输入问题而导致运行出错。


在Python3.5之后,这就不是问题了,在定义函数的时候你可以自主选择要不要提供类型提示。


你还可以定义类型的别名:



虽然不是强制性的,类型注释可以让你的代码理解起来更加简单。它们也允许你使用类型检测工具在运行之前捕获这些零散的类型错误。如果你正在从事大型、复杂的项目,那么类型注释也许会非常有帮助





21 uuid
通过Python标准库中的uuid模块,可以快速并简单地生成统一的唯一ID(又称UUID).


UUID是128位的全局唯一标识符,通常由32字节的字符串表示。它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID —— Universally Unique IDentifier,Python 中叫 UUID。它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。


(字数限制查看原文:https://blog.csdn.net/weixin_42633269/article/details/82877840


推荐书籍:
精通Python自然语言处理
Python编程:从入门到实践




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Python技巧 Python

沙发
mlmyf 发表于 2018-9-28 14:53:08 |只看作者 |坛友微信交流群
这是个好东西。

使用道具

藤椅
yoyorest 发表于 2018-9-29 11:41:08 |只看作者 |坛友微信交流群
挺有意思的,有些还真没有见过

使用道具

板凳
Dear_Li 发表于 2018-10-12 14:20:50 |只看作者 |坛友微信交流群

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 22:21