递归思想与内置方法
我太难了,老铁,我感觉最近压力很大
想躺赢,想当个混子
开玩笑的,我虽然压力很大,但是我还是要装作很快乐的样子,为什么呢?因为我是真的快乐。
来,到了每日的打气环节。
今日洗脑金句: 人民币贬值了,达内股市也跌了,要想不掉价,你得往上爬!
递归
今天的内容很少,所以我们短话长说,顺带一点拖延时间。
按照惯例,我会问你们什么是递归,然后在自己解释一下递归是什么,然后再举几个栗子进一步解释一下递归。
但是今天,我依然会采取同样的方式来讲解
什么是递归?
递 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.
递归讲到这里就好了,因为下面有个很吊的东西,叫做汉诺塔,根本搞不懂,有兴趣的人可以自己去
了解一下。
内置方法
这么多方法,里面有我们已经很熟悉的,还有一些是还没学的,以及一些傻逼才会用的。
主要需要扩展的就是一个, enumerate()方法,作用是同时取出列表的索引和元素。
面向对象编程
面向 过程 编程
按照 流程(流水线的思想) 码代码
就相当于是造瓶子
输入原材料(一堆塑料) --> 融化塑料 --> 造瓶身和瓶盖 --> 输出瓶子
一堆变量/参数 --> 函数1(过程1) --> 函数2(过程2) --> 结果
函数3(过程3) --> 函数2(过程2)
上一个过程的输出必定是下一个过程的输入
优点:1. 思路清晰
缺点:1. 上一个过程完蛋了,下一个过程也完蛋
- 功能与功能之间不独立
- 牵一发而动全身(nick:这句话说得好),不方便修改/扩展功能,可扩展性差
这就是面向对象编程,等于扯淡。没吊用
这里涉及一点点明天要讲的内容。模块化思想。
模块化思想,9个函数分成3大类模块,模块1/模块2/模块3, 以前9个函数互相关联,顶多3个之间互相关联呀.解耦合了(把重复的代码再一次抽离)
什么意思呢,就是以前你一个页面写九个函数,两两相关,现在引出了模块化思想,把所有的函数分成了三类模块,这时候你只用把三个模块给联系起来就好了。
就变成了每个模块里面放三个函数,然后联系起来。
啊字:”老师那每个模块里的三个函数是不是要关联起来啊?“
nick:“对啊”
啊字:“那有毛用,还不是相当于九个连在一起”
nick:“但是这样看上去思路更加清晰了啊”
啊字:“。。。。”
坐等明天上课