Skip to content

Latest commit

 

History

History
284 lines (196 loc) · 5.84 KB

File metadata and controls

284 lines (196 loc) · 5.84 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0142
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在: 

     个人网站: `https://oeasy.org` 
     蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
     GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
     Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

缩进细节

回忆

  • 上次学习了
    • 条件分支
  • 写了一个 条件语句的程序
    • if条件语句 包括
      • if条件表达式
      • if语句执行体
  • 满足条件
    • 执行语句

图片描述

  • if语句 还有 啥要 注意的呢?🤔

满足条件

  • 相同条件
t = float(input("Your temperature:"))
if t > 38:
    print("\033[41m[warning]\033[0mYou have a fever!")
if t > 38:
    print("\033[41m[warning]\033[0mTake a rest!")
  • 可以 起来 吗?

多行缩进

  • 并 同条件 的执行体
t = float(input("Your temperature:"))
if t > 38:
    print("\033[41m[warning]\033[0mYou have a fever!")
    print("\033[41m[warning]\033[0mTake a rest!")
  • 如果满足 if条件表达式
    • 执行if语句执行体
      • 有2句
      • 都缩进了 4个字符
      • 都归 if条件管

图片描述

  • 缩进必须 4 个字符么?

试试 👊

  • 无论是
    • 8 个字符
    • 4 个字符
    • 2 个字符
    • 甚至 1 个字符
    • 问题
t = float(input("Your temperature:"))
if t > 38:
    print("\033[41m[warning]\033[0mYou have a fever!")
    print("\033[41m[warning]\033[0mTake a rest!")
  • 执行体 缩进 必须一样

图片描述

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

没有缩进

  • 没有缩进
t = float(input("Your temperature:"))
if t > 38:
print("\033[41m[warning]\033[0mYou have a fever!")
print("\033[41m[warning]\033[0mTake a rest!")
  • 会报错误❌

图片描述

  • 明明 有条件语句
    • 但是 没有条件语句的 执行体

缩进错误

  • IndentationError
    • 期待着 缩进块

图片描述

  • 否则
    • if语句 没有 执行体

图片描述

  • 缩进 一定要有的
    • 还要 保持 头并进
  • 为什么 一定要 对?🤔

对齐

  • 横平竖直
    • 视觉上 缩进整齐的 代码
    • 头脑上 逻辑是 清晰

图片描述

  • python 要求缩进 多少 呢?

规定

  • 缩进 4 格
    • 是python规定的默认缩进

图片描述

  • 为什么不是2或者8呢?

html代码

  • 缩进2格
    • 缩进数量 太小

图片描述

  • 根本 看不出 层次

unix的c代码

  • 缩进数量为8
    • 这个 有点 过长了
    • 横向 总共 80字符
      • 没这么大的空间

图片描述

  • c/c++ 有大括号
    • python为啥 不用呢?

官方吐槽

图片描述

  • C++ 执行错误
    • 满足条件时
      • 看起来可以执行两句
        • 实际上执行一句
      • 看起来对的
        • 但是要找半天
    • 因为没有大括号
  • python 执行正确

对大括号的态度

  • 大括号 让程序 增加很多行
    • 还有 关于大括号 位置的争论😌

图片描述

  • Guido 对此特性
    • 表达 明确的 态度

图片描述

  • 非常坚决
    • 大括号 没有必要

缩进控制

  • 有缩进就够了
    • 如果 缩进正确
    • 那么 逻辑正确

图片描述

  • 一眼就能看见错误

python

  • 推荐 空4格
    • 恰到好处
    • tab键 刚好 就是 4个空格

图片描述

  • 用 tab键 好呢?
  • 还是 4个空格 好呢?

空格 还是 tab

图片描述

Tabs or Spaces?

用 Tab 还是空格?

Spaces are the preferred indentation method.

空格是首选的缩进方式。

Tabs should be used solely to remain consistent with code that is already indented with tabs.

Tab 只应该用于兼容旧代码(原本就用 Tab 的老项目)。

Python disallows mixing tabs and spaces for indentation.

Python 绝对禁止混用 Tab 和空格进行缩进。

vimrc设置

  • vim 中 可以直接设置
    • 按下空格
    • 自动 扩展成4个空格
" ==============================================
" Python 官方标准缩进设置(完全符合 PEP8)
" ==============================================

" 启用文件类型检测
filetype plugin indent on

" 全局:用空格代替 Tab
set expandtab

" 一个 Tab = 4 个空格
set tabstop=4

" 缩进时每级 = 4 个空格
set shiftwidth=4

" 自动对齐缩进
set autoindent
set smartindent

" 高亮显示行尾空格、Tab 符号(方便排查错误)
set list
set listchars=tab:→\ ,trail:·

总结

  • 这次学习了
    • if条件语句中的 缩进块
  • 缩进的范围
    • 体现的是 程序逻辑
    • 某行 缩进情况 意味着
      • 当前行 归属于 哪个逻辑
    • 一眼就看出来

图片描述

  • 缩进4个空格
    • 从 视觉上 和 逻辑上
    • 都明确了 代码的逻辑关系
  • 毕竟
    • Readability counts.
    • 可读性很重要
  • 生活中 有这种条件语句吗??🤔
  • 下次再说 👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。