什么是控制流
在计算机中程序总是一行一行的顺序执行,那所谓的控制流程,其实就是控制程序的执行流程,改变程序执行的分支,实现不同的逻辑的处理
程序员的思考
很多人学编程最后,脑子里面记住的可能就是IF、For、 While语法结构是什么样的,而从来不会思考这些东西到底是什么,到最后可能学习很长时间,可能还会忘记之前学的,反反复复,可能最后也就放弃了
控制流的分类
其实在语言设计上针对控制流是有明确的分类滴,我们可以根据这种分类,先建立大的思维导图,然后再去看语法,毕竟语言千千万,语法各不同
顺序执行
计算机中程序都是顺序执行, 比如这里我们定义了一个users,然后一步步的对它进行操作,最后完成我们的目标, 那有没有什么问题呢, 其实是有的那就是我们常说的副作用
我们可以看到当我在add中,因为users是list本身传递的是一个引用,所以会造成对main函数中后续执行依旧会有影响
选择
选择是根据条件判断来进行流程分支的选择执行, 语言一般通过 IF来进行, 同时通过elif、else来实现多分枝选择,一些语言里面还有switch,python里面并没有支持
选择执行中一般常提到的一个东西就是短路,就是当某个条件先被满足,就不需要后续条件的判断了
迭代
迭代是为了让程序能够反复执行某一类操作, 类似功能的还有递归,迭代循环在语言设计中一般包含两种:枚举控制和逻辑控制两种循环操作
枚举控制
枚举控制其实就是枚举集合中的每个元素,然后进行处理,这个过程中,其实编程语言隐士的帮我们吧状态保存这种操作给实现了
逻辑控制
逻辑控制是指循环执行某个操作,直到满足某个条件
递归
递归其实也是控制流里面的一种,但它不需要特殊的语法支持,只需要子程序直接或者间接的循环调用自己即可
递归的主要问题是什么呢, 在递归调用的过程中,需要重复的进行栈空间的分配和切换,虽然在某些语言中编译器会直接通过尾递归来优化,但在很多语言中并不支持, 递归的东西还是蛮多的,后面可以单独的说下
其他类型的控制流
上面我们已经总结了顺序执行、选择、迭代、递归四种基础的控制流,类似的控制流海包括:异常和并发,后面章节会继续说明, 谢谢大家
欢迎各位pythoner兄弟一起交流分享学习Python的心得, 大家可以关注下本账号,谢谢鼓励