• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python函数式编程之面向过程面向对象及函数式简析

python 搞代码 4年前 (2022-01-09) 28次浏览 已收录 0个评论
文章目录[隐藏]

Python 函数式编程

Python 不是纯粹的函数式语言,但你可以使用 Python 进行函数式编程

典型的听君一席话,如听一席话,说白了就是 Python 具备函数式编程的特性,

so,可以借用函数式语言的设计模式和编程技术,把代码写成函数式编程的样子

一般此时我会吹嘘一下,函数式代码比较简洁和优雅~

好了,已经吹嘘完了。

以上内容都属于讲道理的范围,那在 Python 中有哪些适合函数式编程的技能点

又有哪些不适的点呢?

下述 2 点先有个印象就行

优点:生成器表达式,这个后面咱会反复提及,具备很多高阶函数,例如 reducemapfilter 三巨头。

缺点:没有无限递归等~

如果你去百度 “什么是函数式编程”,很多地方会给出答案

函数式编程:允许把函数本身作为参数传入另一个函数,还允许返回一个函数。

有道理!

其实函数式编程就是在函数中定义表达式和实现表达式的求职,说白了就是用函数落地你的代码。

看起来好像是废话,它还有一个补充的说明,在函数式编程中要避免状态变化和使用可变对象。

其中避免状态变化 重点要关注赋值语句以及它如何改变状态,因此你在函数式编程中,不会看到 globalnolocal 等内容。

同一案例的不同写法,展示函数式编程

概念与原理都是比较抽象的,咱还是少说概念,这个留到未来你自己总结就好,直接展示源码差异。

计算 1~100 内,计算 5 与 7 的倍数之和

面向过程的写法

count = 0
for num in range(1, 101):
    if num % 5 == 0 or num % 7 == 0:
        count += num
print(count)

在面向过程的写法中,逻辑都是从上向下进行运行的,例如 num 从 1 数到 100,如果对 5 或者对 7 取余等于 0,那表示可以整除,然后将 count 与对应的 num 相加,得到最后的余数。

这种思路是纯面向过程的写法,一般我们学习编程时,首先学会的就是该类写法。

面向对象的写法

该类写法有两种,一种是使用 Python 内置的列表实现,一种是自己声明一个类来实现。

第一种写法:

count = list()
for num in range(1, 101):
    if num % 5 == 0 or num % 7 == 0:
        count.append(num)
print(sum(count))

在上述写法中,变量 count 声明一个 list,即列表对象,但是整理看起来还是有些过程式编程语言的影子。

例如最后的 sum(count) 的使用就有些奇怪,看不出来面向对象的影子。

接下来,咱们创建一个自定义的类,进行逻辑实现。

class My_List_Sum(list):
    def sum(self):
        count = 0
        for n in self:
            count += n
        return count
<a>本文来源gao($daima.com搞@代@#码(网</a>count = My_List_Sum()
for num in range(1, 101):
    if num % 5 == 0 or num % 7 == 0:
        count.append(num)
print(count.sum())

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python函数式编程之面向过程面向对象及函数式简析

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址