递归思想与内置方法

我太难了,老铁,我感觉最近压力很大

想躺赢,想当个混子

开玩笑的,我虽然压力很大,但是我还是要装作很快乐的样子,为什么呢?因为我是真的快乐。

来,到了每日的打气环节。

今日洗脑金句: 人民币贬值了,达内股市也跌了,要想不掉价,你得往上爬!

递归

今天的内容很少,所以我们短话长说,顺带一点拖延时间。

按照惯例,我会问你们什么是递归,然后在自己解释一下递归是什么,然后再举几个栗子进一步解释一下递归。

但是今天,我依然会采取同样的方式来讲解

img

什么是递归?

递 and 归 啊,递就是递过去,归就是收回来。

我就不上图了,怕你们接受不了,递归,就是在函数里面调用这个函数他本身,这样会变成死循环没

错,但是你可以在里面的函数被调用前写一些条件,让他变成不是死循环。

count = 1 # 2 # 3
def f1():
    global count  # 下面的count是全局的count
    if count > 100:
        return
    count += 1 # 2 # 3
    print(count) # 2 # 3
    f1()

f1()

你调用了f1,然后当count>100的时候就会return,就这样,第一个函数执行到了最后一句,也就是f1,继续执行一样的内容,不同的地方是,这时候的count已经+1了,所以最后会返回 100.

递归讲到这里就好了,因为下面有个很吊的东西,叫做汉诺塔,根本搞不懂,有兴趣的人可以自己去

了解一下。

内置方法

55内置函数-内置函数.jpg?x-oss-process=style/watermark

这么多方法,里面有我们已经很熟悉的,还有一些是还没学的,以及一些傻逼才会用的。

主要需要扩展的就是一个, enumerate()方法,作用是同时取出列表的索引和元素。

面向对象编程

面向 过程 编程

按照 流程(流水线的思想) 码代码

就相当于是造瓶子

输入原材料(一堆塑料) --> 融化塑料 --> 造瓶身和瓶盖 --> 输出瓶子

一堆变量/参数 --> 函数1(过程1) --> 函数2(过程2) --> 结果

​ 函数3(过程3) --> 函数2(过程2)

上一个过程的输出必定是下一个过程的输入

优点:1. 思路清晰

缺点:1. 上一个过程完蛋了,下一个过程也完蛋

  1. 功能与功能之间不独立
  2. 牵一发而动全身(nick:这句话说得好),不方便修改/扩展功能,可扩展性差

这就是面向对象编程,等于扯淡。没吊用

这里涉及一点点明天要讲的内容。模块化思想。

模块化思想,9个函数分成3大类模块,模块1/模块2/模块3, 以前9个函数互相关联,顶多3个之间互相关联呀.解耦合了(把重复的代码再一次抽离)

什么意思呢,就是以前你一个页面写九个函数,两两相关,现在引出了模块化思想,把所有的函数分成了三类模块,这时候你只用把三个模块给联系起来就好了。

就变成了每个模块里面放三个函数,然后联系起来。

啊字:”老师那每个模块里的三个函数是不是要关联起来啊?“

nick:“对啊”

啊字:“那有毛用,还不是相当于九个连在一起”

nick:“但是这样看上去思路更加清晰了啊”

啊字:“。。。。”

坐等明天上课

img

posted @ 2019-08-14 16:34  chanyuli  阅读(150)  评论(0编辑  收藏  举报