2.5.6 函数式编程

之前我们提到两种“编程范式”,面向对象和面向过程。 还有另外一种重要的范式叫函数式编程。

什么是函数式编程

Learning By Reading 难度:★★ 重要性:★★★

  • 阅读材料

    了解函数式编程的要领。

Learning By Reading 难度:★★ 重要性:★★

  • 不同编程范式有无优劣?每个人或许都有自己的想法。比如这里

  • 谈谈你对文中观点的看法。

Python函数式编程

Learning By Reading 难度:★★★ 重要性:★★

  • Python是一种多范式编程语言,可以进行函数式编程。

    阅读材料

    了解Python中的函数式编程。

  • 有些第三方库可以让我们更方便地在Python中进行函数式编程,比如fn.py

    阅读材料

    fn.py做大致的了解。

Learning By Thinking 难度:★★ 重要性:★★★

  • 上文提到如何将forwhile转成更符合函数式编程思想的代码,

    我们记得列表解析也可以用来建list,你觉得列表解析是函数式编程吗?说说理由。

turtle库不是用函数式编程思想写的,因为它有外部状态(比如屏幕上的图案),并且在函数内部改变了参数的值(比如海龟的位置)。

我们将通过一个捏造的例子来感受一下Python的函数式编程。

Learning By Doing 难度:★★★ 重要性:★★★

  • 用函数式编程思想,输入一篇文章和一份**词表,其中文章已经分好词(用 空格 隔开 像 这样 把 不同 的 词 隔开),

    且被换行符分成若干段落,要求将出现在**词表中的词,每两个字之间插入字符串(hx),如编程变成编(hx)程

    输出插入字符串后,每个段落中最长的词和最短的词。

Tasks For Tutors

  • 以前我有个友人我有个友人,捷敏辩给,多智好学,以前有一次和他谈到面向对象,我说,“小时候学的时候都看书上说面向对象怎么怎么好,用了之后吧其实也有很多问题。”

    他说,“我*,你竟然不知道面向对象的好处,我对你真是太失望了!”当然我们并没有友尽,后来他去西藏建设社会主义去了,当然这两件事之间没有任何联系。

    和学员们聊聊对面向对象,函数式编程,面向过程几种主要编程范式的看法。(注意文明讨论

Last updated