Heim  >  Artikel  >  Backend-Entwicklung  >  python 有哪些优雅的代码实现 ?

python 有哪些优雅的代码实现 ?

WBOY
WBOYOriginal
2016-06-06 16:23:411286Durchsuche

python 有哪些优雅的代码实现 ?以前在一篇博客中学习过。记得这是有一个统一的名称的。不过忘了

举个常用的例子 [i for i in list if not…… ]。


这种代码写的很爽,但感觉自己掌握的不全。所以特来问一下

回复内容:

Intermediate Python
看这个文档,爽溜溜的各种技巧
generators,map,reduce,lambda ,decorators, *args等等
各种优雅~ 所谓优雅,其实是由于这门语言的语法糖很甜,给(之前没有接触过的)人造成了一种“卧槽,好厉害”的错觉,其实很多情况下其他语言也可以,只不过可能实现起来不这么“优雅”而已。

这里简单介绍一点Python“优雅”的代码和这颗糖的名字,至于这颗糖的更深层次的东西,这里一律略过。


首先是lambda表达式。lambda表达式是一种非常简洁的定义函数的形式,不过一般不推荐写lambda表达式。比如求两个数的和,通过定义函数的写法为:
<code class="language-python"><span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">):</span>
    <span class="k">return</span> <span class="n">x</span> <span class="o">+</span> <span class="n">y</span>
</code>
1. map、reduce、filter三兄弟和lambda匿名函数,拯救缓慢的for循环(然而其实也并没有特别快),伪装函数式语言(然而实际上还是OO),并且[哔]

2. yield大法好,generator大法好。

3. try else,for else,while else……

4. monkey patch大法好,模块封装好了不想改模块本身但是又必须做修改?靠这个了……

5. 装饰器大法好……

6. 列表解析大法好……

似乎能『优雅』的主要都在这几个点上,有空了我会补一点例子。然而任何一点用太多其实都会惹人厌,所以说PEP告诉你一行不要太长是有道理的…… 楼上都说了一些很好用、很实用的。补充一个 functools 包,里面的函数你用一次,就会彻底爱上。 从问题来看,题主python都还不熟,更别提优雅的代码实现了,还有楼上的回答,基本都是那几个函数式编程的工具,推荐《python cookbook》,楼上说的和题主问的都涵盖了,对着书敲一遍吧。 不同人群写
Python的阶乘函数

1 . 普通青年

<code class="language-python3"><span class="k">def</span> <span class="nf">f</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
    <span class="k">if</span> <span class="n">n</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
        <span class="k">return</span> <span class="mi">1</span>
    <span class="k">return</span> <span class="n">n</span> <span class="o">*</span> <span class="n">f</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
</code>
<code class="language-python3"><span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="o">=</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span>
</code>
读读 Python documentation 里的 The Python Language Reference 你就明白了,这都是很一般的写法。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn