Skip to content

Latest commit

 

History

History
172 lines (125 loc) · 4.47 KB

7020-198696-000702 缩进细节.sy.md

File metadata and controls

172 lines (125 loc) · 4.47 KB
show version enable_checker
step
1.0
true

缩进细节

回忆

  • 这次学习了条件分支
  • 首先进行if单分支条件语句
  • 如果expression表达式成立
  • 就执行相应的语句
  • 如果条件满足的话
    • 可以执行多条语句么?🤔
  • 试试

满足条件

图片描述

  • 满足第2句条件的话
    • 可以执行第3句
  • 还满足第4句条件的话
    • 可以执行第5句
  • 其实第2、4两句条件相同的
    • 可以把执行部分合并起来么?

多行缩进

  • 如果合并成两行的话
  • 会如何呢?

图片描述

  • 如果满足要求
  • 两条语句都会执行
  • 这个缩进必须4个字符么?
  • 试试👊

尝试

  • 只要是相同字符
    • 3个字符
    • 2个字符
    • 甚至1个字符
    • 都没有问题

图片描述

图片描述

  • 那如果没有缩进会如何呢?

没有缩进

图片描述

  • 没有缩进
  • 会报错误
  • 期待着一个缩进的块

图片描述

  • 缩进是一定要有的
  • 即使缩进只有一格
  • 但是缩进多少才合理呢?

规定

图片描述

  • 最好就是4格缩进
  • 可以在vim中进行控制
  • :set noet sw=4 ts=4 sts=4 ai
    • 可以快速设置
  • gg=G可以从头到尾快速缩进
  • 缩进的3,4行其实就是一个block
  • 严格使用缩进来体现代码的逻辑从属关系
  • 如果缩进不对 那么这个代码本身就是错误的
  • 这样一眼就能看见错误
  • 至少和c++比起来是这样的
  • 官方文档曾经吐槽其他语言使用的大括号

官方吐槽

图片描述

  • 例程看起来if满足时可以执行两句
  • 实际上执行一句
  • 看起来对的
  • 但是要找半天
  • 而且大括号让程序增加很多行
  • 还有关于大括号放置位置的争论
  • python这下好了
  • 直接就把大括号去了
  • 为什么python中空格缩进会这么重要呢?

缩进作用

  • 其实空格在有些情况下是会被忽略的
  • 比如

图片描述

  • 就像其他语言一样
  • 生成语法树的时候
  • 这些空格可以被忽略
  • 那什么时候空格不能被忽略呢?

缩进

  • 在用缩进控制block范围的时候
    • block是语句块
    • block语句块是由语句statement组成的
    • block语句块的范围是由缩进控制的

图片描述

  • 大多数情况

  • 我们会选择第一种方式

  • 一句是一个statement语句

  • 3个statement语句构成一个block语句块

  • 这个block语句块是和if对接的

  • 过程是这样的

  • 但是在这个 程序块block中是否会出现意外呢

  • 有意就一定有意外😄

意外

图片描述

图片描述

  • 为什么会这样呢?

简化分析

图片描述

图片描述

  • 如果是39的话
    • 第三行就能执行
    • l就能被声明
  • 如果是36的话
    • 第三行就不能执行
    • l就不能被声明
  • 怎么办?

提前声明

图片描述

  • 不论if条件是否满足
  • l都提前声明了
  • 在一开始就把所有要用的变量声明好
  • 是一个好习惯

图片描述

总结

  • 这次学习了if单分支条件语句中的缩进块
  • 缩进的范围是程序逻辑的体现
  • 某行缩进与不缩进意味着这行是不是属于if的语句块
  • 这很好很显眼
  • 而且要注意变量声明最好在最前面做
  • 比较清晰
  • 我们可以 debug调试 这个程序么?🤔
  • 下次再说👋