对于Python 特性进行大揭秘

开发 后端
下面文章进行详细介绍说明Python 特性的一些问题,这些问题都是非常常用的,也是许多初学者想要知道的,在这里跟大家一起分享啊。

Ruby语言和Python非常接近,但是整体的结构还是不太一样的,这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行,所以很受程序员的青睐。

这是一个稳妥的答案,但不能很确切地阐明问题。不幸的是,即使是函数程序员他们自己也很难对 FP 究竟是什么有个一致的认识。“盲人摸象”的故事用来形容这一情况似乎很合适。还可以放心地将 Python 特性与“命令编程”(使用例如 C、Pascal、C++、Java、Perl、Awk、TCL 以及其它大多数语言所执行的操作,至少是在很大程度上)进行对比。

从个人角度来说,我会将函数编程粗略地描绘为至少具有以下几个特征。称得上函数性的语言使这些事情变得简单,而使其它事情变得困难或不可能:函数是第一类(对象)。即,可以对“数据”进行的每样操作都可以使用函数本身做到(例如将一个函数传递给另一个函数)。 #t#

将递归用作主要的控制结构。在某些语言中,不存在其它“循环”构造。 重点集中在列表 LISt 处理(例如,名称 Lisp )。列表经常和子列表的递归一起使用以替代循环。 “纯”函数语言能够避免副作用。这不包括在命令语言中最普遍的模式,即指定第一个,然后将另一个值指定给同一个变量来跟踪程序状态。

FP 不鼓励或根本不允许出现 语句,取而代之是使用表达式求值(换句话说,即函数加上自变量)。在很纯粹的情况下,一个程序就是一个表达式(加上支持的定义)。 FP 关心的是计算 什么而不是 如何计算。 许多 FP 利用了“更高等级”函数(换句话说,就是函数对一些函数操作,而这些函数又对其它函数操作)。

函数编程的提倡者认为所有这些特征都导致更快速的开发更短以及错误更少的代码。而且,计算机科学、逻辑和数学领域的高级理论学家发现证明函数语言和程序的正式性能比命令语言和程序容易得多。自从 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 是如何使用函数和递归来表示流控制是值得的。

Python 中 Lambda 短路

  1.   # Normal statement-based flow control   
  2.           
  3.           
  4.           if  
  5.          <cond1>:   func1()   
  6.           
  7.           elif  
  8.          <cond2>: func2()   
  9.           
  10.           else  
  11.         :         func3()   
  12.    
  13.         # Equivalent "short circuit" expression   
  14. (<cond1>   
  15.           
  16.           and  
  17.          func1())   
  18.           
  19.           or  
  20.          (<cond2>   
  21.           
  22.           and  
  23.          func2())   
  24.           
  25.           or  
  26.          (func3())   
  27.    
  28.         # Example "short circuit" expression   
  29. >>> x = 3   
  30. >>>  
责任编辑:chenqingxiang 来源: CSDN
相关推荐

2010-02-23 16:46:27

Python设计语言

2018-03-27 09:58:37

2010-02-23 17:35:46

Python

2020-12-28 09:50:50

Python内存管理语言

2010-02-23 15:04:45

Python 集成开发

2010-02-02 18:34:00

Python

2012-05-28 09:22:07

微软开源

2010-02-23 14:33:55

Python语言

2010-02-02 09:08:39

Python 特性

2010-03-31 08:35:17

Visual Basi

2017-07-05 16:43:52

VSAN加密虚拟化

2016-02-29 16:54:10

OpenStack混合云应用软件定义基础设施

2011-08-15 09:25:04

2009-12-08 11:08:27

WCF双向

2024-05-08 16:54:21

Python编程开发

2017-07-06 08:21:27

VSAN加密虚拟机

2009-05-28 10:12:04

2017-08-24 09:19:20

分解技术揭秘

2010-02-04 14:16:45

Android平台

2010-08-09 09:56:12

FlexBuilder
点赞
收藏

51CTO技术栈公众号