python技巧-经常被大家忽略的,几个Python技巧,太实用了

原标题:经常被大家忽略的,几个Python技巧,太实用了

ec6942b55c174be2be107faf5ca23e7d.jpeg

我已经使用Python编程有多年了,即使今天我仍然惊奇于这种语言所能让代码表现出的整洁和对DRY编程原则的适用。这些年来的经历让我学到了很多的小技巧和知识,大多数是通过阅读很流行的开源软件,如Django, Flask,Requests中获得的。

下面我挑选出的这几个技巧常常会被人们忽略,但它们在日常编程中能真正的给我们带来不少帮助。

577195dd711d4251937e505061314b89.png

1. 字典推导(Dictionary comprehensions)和集合推导(Set comprehensions)

大多数的Python程序员都知道且使用过列表推导(list comprehensions)。

如果你对list comprehensions概念不是很熟悉——一个list comprehension就是一个更简短、简洁的创建一个list的方法。

23ce689a4b1844df9edb126f1fca88d4.jpeg

自从python 3.1 (甚至是Python 2.7)起,我们可以用同样的语法来创建集合和字典表:

8266a49c55ca419e9244862b23f3730e.jpeg

在第一个例子里,我们以some_list为基础,创建了一个具有不重复元素的集合,而且集合里只包含偶数。

而在字典表的例子里,我们创建了一个key是不重复的1到10之间的整数,value是布尔型,用来指示key是否是偶数。

这里另外一个值得注意的事情是集合的字面量表示法。我们可以简单的用这种方法创建一个集合:

efb5a3094eaf425daa9893a6fa9381e2.jpeg

而不需要使用内置函数set()。

2. 计数时使用Counter计数对象

这听起来显而易见,但经常被人忘记。

对于大多数程序员来说,数一个东西是一项很常见的任务,而且在大多数情况下并不是很有挑战性的事情——这里有几种方法能更简单的完成这种任务。

Python的collections类库里有个内置的dict类的子类,是专门来干这种事情的:

94bd4577ed00469ca2891247c0de197c.jpeg

3. 漂亮的打印出JSON

JSON是一种非常好的数据序列化的形式,被如今的各种API和web service大量的使用。

使用python内置的json处理,可以使JSON串具有一定的可读性,但当遇到大型数据时,它表现成一个很长的、连续的一行时,人的肉眼就很难观看了。

为了能让JSON数据表现的更友好,我们可以使用indent参数来输出漂亮的JSON。当在控制台交互式编程或做日志时,这尤其有用:

4b8c2a2fb16849bc9d1a31db9aef3de7.jpeg

同样,使用内置的pprint模块,也可以让其它任何东西打印输出的更漂亮。

4. 创建一次性的、快速的小型web服务

有时候,我们需要在两台机器或服务之间做一些简便的、很基础的RPC之类的交互。我们希望用一种简单的方式使用B程序调用A程序里的一个方法——有时是在另一台机器上。仅内部使用。

我并不鼓励将这里介绍的方法用在非内部的、一次性的编程中。我们可以使用一种叫做XML-RPC的协议 (相对应的是这个Python库),来做这种事情。

下面是一个使用SimpleXMLRPCServer模块建立一个快速的小的文件读取服务器的例子:

a9139223c3a042a3b569ce51b672d64a.jpeg

客户端:

00c655d1999544f48c879595f5747e23.jpeg

我们这样就得到了一个远程文件读取工具,没有外部的依赖,只有几句代码(当然,没有任何安全措施,所以只可以在家里这样做)。

5. Python神奇的开源社区

这里我提到的几个东西都是Python标准库里的,如果你安装了Python,你就已经可以这样使用了。而对于很多其它类型的任务,这里有大量的社区维护的第三方库可供你使用。

下面这个清单是我认为的好用且健壮的开源库的必备条件:

好的开源库必须…

包含一个很清楚的许可声明,能适用于你的使用场景。

开发和维护工作很活跃(或,你能参与开发维护它。)

能够简单的使用pip安装或反复部署。

有测试套件,具有足够的测试覆盖率。

如果你发现一个好的程序库,符合你的要求,不要不好意思——大部分的开源项目都欢迎捐赠代码和欢迎提供帮助——即使你不是一个Python高手。

责任编辑:

更新内容:1.增加了设置命令流字体背景和边框颜色的功能;2.增加了可保存整个命令流为文本的功能;3.调整了部分右键菜单的位置和快捷键;4.修正了个别情况下打开命令流显示错误的问题;5.修正了一些情况下垂直滚动条出错的问题;6.修正自动滚屏低部留有空白的问题;7.修正不能实时读取命令流的问题。 操作提示: 1、该程序无须放在ABAQUS的工作目录下,可随意放置。另外程序可以随时打开,无须考虑与ABAQUS CAE的打开次序; 1、程序第一次运行时需要指定abaqus.rpy的位置,以后运行会自动加载上一次设置; 2、在窗口中拖动右键可以移动窗口位置; 3、把鼠标移动到窗口边缘可以拖动改变窗口大小。 该程序主要是给使用ABAQUS的朋友们学习Python用的,可以作为ABAQUS PDE的辅助工具, 对于ABAQUS和Python的关系我就不多说了,在ABAQUS CAE中的每一个菜单或按钮操作都是被解释为Python语句,然后才提交上去。 而这些Python语句被适时地保存在工作目录下的abaqus.rpy文件中,这就给我们提供了一个绝好的Python学习途径:进行CAE的操作,然后查看abaqus.rpy文件中的对应的Python语句// 该程序会适时的读取abaqus.rpy文件,以便你把相应的CAE操作对照起来// 如果对该程序有什么好的建议或意见,或需要添加什么样的功能, 或者发现什么bug,可以直接给我联系, Email:ck436#126.com(把#改为@). ========================================================== 如果你根本就不能运行本程序,那很有可能你还没有安装.NET Framework 2.0以上的平台. .NET Framework是在Microsoft .NET平台上进行程序开发和程序运行的基础. 给出解决方法: 你可以通过以下几个网址下载: http://www.onlinedown.net/soft/38669.htm http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=zh-cn#QuickInfoContainer 如果安装.NET Framework时提示installer错误,则你需要先安装Windows Installer(一般不会遇到): http://www.onlinedown.net/soft/12668.htm http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=889482fc-5f56-4a38-b838-de776fd4138c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值