美文网首页
什么是Pythonic?

什么是Pythonic?

作者: 何赛艾慕 | 来源:发表于2019-05-12 15:10 被阅读0次

    如果你也听说过著名的“the zen of python”,如果你和我一样小白到写的代码总是乱七八糟,如果你也想了解一下真正“Pythonic”的代码是什么样子的话,不妨看下去。

    pythonic,简单的翻译就是python风格,pythonic code,就是说你写的代码要带有浓厚的python规范和python风格。往规范了说,PEP 8是你写出规范代码不得不读的文章,至于往python风格来说的话让,嗯,让我们先看看“the zen of python”中的几句话:

    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    

    渣渣翻译:美丽胜过丑陋,嗯这不废话么,啥是美丽啊;清晰胜过不清晰,嗯,意会吧,言穿不了;简单好过复杂,这倒是很好理解;复杂胜过更复杂?后面这个复杂应该有混乱的意思了;平滑胜过嵌套,间隔胜过紧凑,感觉这都是为了可读性服务的呀。
    说了这么多,还是不知道pythonic的代码是啥样子的,于是,看例子吧!

    例一:

    对一个数组里的每个元素做个简单处理:

    i = 0
    while i < len(list):
       simple_process(list[i])
       i += 1
    

    没毛病,够python吗?显然不够,我们都知道更python的应该用for i in range():

    for i in range(len(list)):
        simple_process(list(i))
    

    这样够python了吧?很遗憾,推荐写法是下面这样:

    for element in list:
        simple_process(element)
    

    看起来确实舒服呀有没有!再强调一下要意会

    例二:

    其实python设计之初还是为了方便编程,可读性高,但是为了丰富这门语言,各种各样复杂的语法还是不可避免的诞生,就比如常见的切片操作,也许熟练了以后你能很快的说出L[-1:3:-2],L[-2::-2],L[:2:2]的不同,但是这终归不算一件很轻松的事。

    例三:

    交换a,b,别的语言还需要引入一个c,而python:

    a,b = b,a
    

    至于条件表达式,列表推导式,打包和解包,这在我为时不久的学习时间内已经养成习惯了,当然不仅仅是语法的简洁,这样的写法还可能节约储存内存,最典型的例子就是列表推导式类的解析语法。

    sum(k*k for k in range(1,n+1))
    

    例四:

    with open('###.txt') as f: 
    

    打开文件你有使用过这种方式打开吗?

    print(''.join(words))
    

    拼接字符你有使用这种方式拼接吗?
    很多语言都支持的装饰器为什么再python中广泛应用呢?

    这些都只是pythonic的冰山一角,从规范的PEP8到pythonic的设计方式,你离pythonic coder还有多远?

    相关文章

      网友评论

          本文标题:什么是Pythonic?

          本文链接:https://www.haomeiwen.com/subject/kqscaqtx.html