简介Python版本选择


本文对Python的版本选择,IDE选择及编码的解决方案进行了一番详细的描述,实为Python初学者必读的Python学习经验心得,一种方式是主程序使用一门高级语言,比如C++进行编写,然后对其嵌入一个脚本解释器,在运行时动态执行一些脚本函数;

但正如我们可以使用数字 23 而无需将它与任何名称绑定一样换句话说,象函数自变量一样),我们可以使用用 lambda 创建的函数对象而不用将它与任何名称绑定。一个函数只是我们在 Python 中对其执行某些操作的另一个值。

我们对第一类对象所执行的主要操作是将它们传递给 FP 内置函数 map()、reduce() 和 filter()。这些函数中的每一个都接受函数对象作为其第一个自变量。 map() 对指定列表中每个对应的项执行传递的函数,并返回结果列表。

reduce() 对每个后续项执行传递的函数,返回的是最终结果的内部累加;例如 reduce(lambda n,m:n*m, range(1,10)) 意味着“10 的阶乘”换句话说,用每一项乘上前一次相乘的乘积)。

  • 有关Python 解释器说明介绍
  • 如何创建Python多线程环境
  • 浅析Python多线程问题
  • 如何进行建立Python主线程?
  • 执行Python 解释器相关说明

filter() 使用传递的函数对列表中的每一项“求值”,然后返回经过甄别的,通过了传递函数测试的项的列表。 我们还经常将函数对象传递给自己的定制函数,但它们通常等同于上述内置函数的组合。

通过将这三种 FP 内置函数进行组合,可以执行惊人的一系列“流”操作都不使用语句,而只使用表达式)。 Python 中的函数循环 替换循环与替换条件块一样简单。

for 可以直接转换成 map()。对于我们的条件执行,我们需要将语句块简化成单一函数调用我们正逐步接近通常的做法):while 的转换仍需要 while_block() 函数,它本身包含语句而不仅仅是表达式。但我们需要对该函数做进一步的消除例如对模板中的 if/else 进行短路)。

另外,因为循环主体按设计)无法更改任何变量值,所以 <cond> 很难用在一般的测试中,例如 while myvar==7那么,将在 while_block() 中修改全部内容)。添加更有用条件的一个方法是让 while_block() 返回一个更有趣的值,然后将这个返回值与终止条件进行比较。有必要看一下这些消除语句的具体示例:

  1. # imperative version of "echo()"   
  2. def echo_IMP():   
  3. while 1:   
  4. x = raw_input("IMP -- ")   
  5. if x == 'quit':   
  6. break   
  7. else   
  8. print x   
  9. echo_IMP()   
  10.  
  11. # utility function for "identity with side-effect"   
  12. def monadic_print(x):   
  13. print x   
  14. return x   
  15.  
  16. # FP version of "echo()"   
  17. echo_FP = lambda: monadic_print(raw_input("FP -- "))=='quit' or echo_FP()   
  18. echo_FP()  

我们所完成的是设法将涉及 I/O、循环和条件语句的小程序表示成一个带有递归的纯表达式实际上,如果需要,可以表示成能传递到任何其它地方的函数对象)。我们的确仍然利用了实用程序函数 monadic_print(),但这个函数是完全一般性的,可以在我们以后创建的每个函数程序表达式中重用它是一次性成本)。

请注意,任何包含 monadic_print(x) 的表达式所求值的结果都是相同的,就象它只包含 x 一样。FP特别是 Haskell)对于“不执行任何操作,在进程中有副作用”的函数具有“单一体”意思。

  1. 如何使Python嵌入C++应用程序?
  2. 深入探讨Ruby与Python语法比较
  3. Python学习资料介绍分享
  4. Python学习经验谈:版本、IDE选择及编码解决方案
  5. 浅析Python的GIL和线程安全

评论关闭