zoukankan      html  css  js  c++  java
  • Pythonic是什么?

    Python 之禅之中有这样几句话:

    优美胜于丑陋(Python 以编写优美的代码为目标)
    明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
    简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
    复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
    扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
    间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
    可读性很重要(优美的代码是可读的)

    我想这应该可以大致解释一下 Pythonic 了。之前我在学习和写 Python 的时候, 都是在用我当初写 Java 的那些东西。丝毫没有一点 Python 特有的感觉, 感觉就像在写 Java 代码,只不过在使用 Python 的 语法复制一遍,直到今天我看见了这样的Pythonic。明白了这才是 Python 。

    Python 快排。

     1 def quick_sort(array):
     2     if len(array) <=1:
     3         return array
     4     left, right = [], []
     5     avg = array.pop()
     6     for x in array:
     7         if x >= avg:
     8             right.append(x)
     9         else:
    10             left.append(x)
    11     return quick_sort(left) + [avg] + quick_sort(right)

    在对比一下我之前写的快排 https://www.cnblogs.com/JulyShine/articles/10017886.html 。四个字, 不忍卒读,感觉自己就是个傻子,在交换两个数时,我这样写的:

    交换 a, b
    
    test = a
    a = b
    b = test
    
    Pythonic:
    
    a, b = b, a
    
    .....

    唉, 我脑壳疼。。。,从来没想到过啊。。。

    ps:

    学无止境,且行且珍惜, 与君共勉!

  • 相关阅读:
    zoj 3599 Game 博弈论
    hdu 2486/2580 / poj 3922 A simple stone game 博弈论
    hdu 1517 A Multiplication Game 博弈论
    hdu 4407 Sum 容斥原理
    hdu 4686 Arc of Dream
    hdu 4588 Count The Carries
    hdu 4586 Play the Dice
    C#学习(5)
    C#学习(4)
    C#学习(3)
  • 原文地址:https://www.cnblogs.com/JulyShine/p/10061131.html
Copyright © 2011-2022 走看看