大多数开发人员对于开发Python应用程序的速度大约是用Java开发同类应用程序速度的10倍,要是相比C/C++节约的时间就更多了,对开发速度采用何种评价标准一直是个很难确定的问题,下文就对Python 特性进行学习。
仔细分析一下,这2个参数中,有1个Python 特性是在request生存期内不变的,而另外一个是用于过滤的值。所以最终用了一下lambda来做了个函数的分阶段参数传递。例子如下,过滤函数:
- # Normal statement-based flow control
- if
- <cond1>: func1()
- elif
- <cond2>: func2()
- else
- : func3()
- # Equivalent "short circuit" expression
- (<cond1>
- and
- func1())
- or
- (<cond2>
- and
- func2())
- or
- (func3())
- # Example "short circuit" expression
- >>> x = 3
- >>>
Python是一种动态语言,而且还常常号称是动态语言里面最慢的一个。最近Ruby的出现才略微改变了一下这种情况。呵呵,听说Ruby比Python还要“动态”一些。在Python中提高效率的一种可选办法是确保可读性的情况下避免使用动态特性,比如过多的"."操作符就很低效。
另外,就是可以用一些函数式编程的方法,比如很多内置函数,如map()、filter()、zip()等等,应用lambda也是个不错的办法。自从 Python 1.0 以来,Python 具有上面列出的大多数 FP 特征。但对于大多数 Python 特性,它们以一种非常混合的语言呈现。
很大程度上是因为Python 特性的 OOP 特性,您可以使用希望使用的部分而忽略其余部分(直到在稍后需要它为止)。使用 Python 2.0, 列表内涵添加了一些 非常棒的“句法上的粉饰”。虽然列表内涵没有添加什么新的能力,但它们使许多旧的能力看起来好了 许多。
Python 中 FP 的基本元素是函数 map() 、 reduce() 和 filter() ,以及运算符 lambda 。在 Python 1.x 中, apply() 函数对于将一个函数的列表返回值直接应用于另一个函数也很方便。
Python 2.0 为这一目的提供了改进的语法。可能让人吃惊,但很少的这几个函数(以及基本运算符)几乎足以编写任何 Python程序;特别是,所有的流控制语句( if 、 elif 、 else 、 assert 、 try 、 except 、 finally 、 for 、 break 、 continue 、 while 、 def )可以只使用 FP 函数和运算符以函数风格处理。
虽然实际上消除程序中的所有流控制命令可能只对加入“混乱的 Python”竞争(与看上去非常象 Lisp 的代码)有用,但是理解 FP 是如何使用函数和递归来表示流控制是值得的。
【编辑推荐】