专栏首页Python小屋如果把Python代码写成这样子就太难看了

如果把Python代码写成这样子就太难看了

本着博采众家之长的想法,前几天买了几本Python爬虫、大数据和机器学习方面的书回来看,故步自封、闭门造车是绝对不行的。粗略翻看了一下,学到了不少的东西,但是也发现了不少的问题,最大的问题就是感觉很多代码不够优雅,仅仅是匆匆忙忙完成功能而已,没有做任何的优化,也没有发挥Python语言的优势,明显是Python内功不够深厚的表现。

随手举个例子,就不说是从哪本书里看的了。下面这段代码用来检查给定字符串是否是合法IP地址:

def checkIP(ipAddress):

if len(ipAddress.split('.')) == 4:

flag = ipAddress.split('.')[0] in map(str, range(256))

flag = flag and ipAddress.split('.')[1] in map(str, range(256))

flag = flag and ipAddress.split('.')[2] in map(str, range(256))

flag = flag and ipAddress.split('.')[3] in map(str, range(1, 255))

return flag

else:

return False

吐血三升后,我做了如下改写:

def checkIP2(ipAddress):

try:

ipAddress = map(int, ipAddress.split('.'))

ipAddress = list(filter(lambda item:0<=item<=255, ipAddress))

assert len(ipAddress)==4 and (ipAddress[3] not in (0, 255))

return True

except:

return False

Python代码素来以简洁和优雅著称,一个好的Python代码应该是漂亮的、优雅的,应该让人阅读时有身心愉悦的感觉,而不应该有发堵的感觉。而要写出足够优雅、足够Pythonic的代码,没有深厚的Python内功是很难做到的。

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python函数默认值参数的2个坑

    在定义函数时,Python支持默认值参数,在定义函数时可以为形参设置默认值。在调用带有默认值参数的函数时,可以不用为设置了默认值的形参进行传值,此时函数将会直接...

    Python小屋屋主
  • 微课|Python程序设计开发宝典(5.2.2):默认值参数

    调用带默认值参数的函数时,有三个要点:1)是否给带默认值的参数传递了实参,2)参数的默认值是否为可变对象,3)在函数内部是如何使用默认值参数的。

    Python小屋屋主
  • Python多进程编程时__name__属性的作用

    Python程序中,由于GIL(Global Interpreter Lock,全局解释器锁)的原因,采用多线程编程并不能大幅度提高任务吞吐量。如果要充分利用硬...

    Python小屋屋主
  • Python 库安装问题-用pip安装pyHook3报错,原因及解决办法

    我们来看报错信息,提示没有找到swig.exe这个文件。 原因是没有安装swig.exe或者没有把它添加到环境变量中。它是pyHook3安装必不可少的,我们来...

    小蓝枣
  • Prior-based Domain Adaptive Object Detection for Hazy and Rainy Conditions

    恶劣的天气条件,如雾霾和雨水,会破坏捕获图像的质量,导致训练在干净图像上的检测网络在这些图像上表现不佳。为了解决这一问题,我们提出了一种无监督的基于先验的领域对...

    于小勇
  • Truffle Provider 构造及其解释

    Truffle[1] 是以太坊上智能合约的开发环境,类似Java语境下的Maven或者Gradle工具,但是内涵更加丰富,除了编译链接,它还兼顾了智能合约的部署...

    lambeta
  • Linux命令(45)——svn命令

    SVN是Apache Subversion的缩写 ,是一个开放源代码的版本控制系统。相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联...

    Dabelv
  • IDEA 你不知道小技巧——后缀法自动生成代码(Postfix Completion)

    可以看到之前介绍的所有的模板都在这里声明了,如果你想修改或者自定义添加都可以在这里完成。

    wsuo
  • 汇医慧影产品被黑客倒卖?官方回应:不涉及源码和客户数据

    内容提要:自新冠疫情在全球肆虐以来,黑客成了最活跃的群体,可谓嚣张至极。WHO、CDC 等权威机构都先后遭到入侵,辅助新冠肺炎诊断的医疗公司也未能幸免。

    HyperAI超神经

扫码关注云+社区

领取腾讯云代金券