Skip to content

Latest commit

 

History

History
163 lines (128 loc) · 4.68 KB

36-87343-转义(escape)序列(sequence).sy.md

File metadata and controls

163 lines (128 loc) · 4.68 KB
show version enable_checker
step
1.0
true

转义序列

回忆上次内容

  • 我们发现了5bit-Baudot博多码的来历
  • 从莫尔斯码到博多码
    • 原来人来控制时间间隔,现在机器控制时间间隔
    • 输入方式从电键改成键盘
    • 输出方式从纸带变成打字机
  • 除了\n\r之外还有什么样的特殊字符吗?🤔

搜索 ASCII

  • 找到ascii的定义
  • 还有一些类似于\n\r之类的东西

图片描述

动手试试

图片描述

转义总结

  • \a是 ␇ (bell),
    • 早期电传打字机快回车之前都会预警的铃铛
    • 也可以手动发送编码敲一下这个铃铛
    • 后来一般都是和主机直接连接的蜂鸣器之类的
    • 现代终端或者服务器可能这个响动
    • 有声卡连接的音响,一般也没有声音
  • \b
    • BackSpace,退回一格
  • \t
    • 是水平制表符
    • Horizontal Tab
  • \v\f
    • 效果就是 LineFeed 的样子
  • 为什么只能\n
    • 难道/n不行么?
    • 动手试试!!

实验

图片描述

  • 确实不行啊
  • ascii的定义是源头
  • 具体 python 对于这些字符的解释是跟 c 语言学习的
  • 这些特殊的东西都和 \反斜杠 这个字符相关联
  • 为什么呢?

反斜杠

  • 为什么方向的斜杠管这个叫反斜杠呢?
  • 斜杠是成对儿的
    • slash 斜杠 /
    • backslash 反斜杠 \
  • 我们一般的都是右利手
    • 一般从上往下砍都是 右上到左下 slash 很顺手
    • slash 这个词本身就是砍
    • 用鞭子或者锋利的刃来砍
    • 暴力的砍,主要是对于树来说的
    • 顺手的就是 slash
    • 反过来不顺手的就是 backslash
  • escape code 转义字符有点逆向思维的感觉
    • \自身无法构成一个一个具体的字符
    • 而是要和后面的字符一起
    • 构成一个转义的字符
  • 所以转义用的是反斜杠
    • 用的是\ backslash

图片描述

转义 Escape

图片描述

  • \反斜杠(backslash)加了之后就不是原来的字面意思了
    • 转义么
    • 转义转义
    • 转化含义
  • 所以\反斜杠这个字符
    • 也叫做转义字符Escape character
    • \b 这两个字符的序列算是一个转义序列 Escape sequence
    • \ 这个转义字符会让 \b转义序列 转义为 Backspace
    • Backspace退格是这个序列转化含义之后的含义
    • 这个转化后的含义也对应一个ascii字符
    • 就是 \b
    • 键盘上的退格对应的数值就是8
  • 转义的本质是什么呢?

图片描述

转义本质

  • 转换含义!!!😡
    • \n本来是两个字符
    • 转义字符\反斜线
    • 把自己和后面的字符n一起
    • 构成了转义序列\n
    • 转换含义成为一个新的含义
    • 原来的字符是\n
    • 转成新的含义为换行
  • \r就不是\r
    • \r是一个整体
    • 对应一个字符
    • 整个对应 ascii 中序号13的字符

图片描述

试试

  • 就像a对应65
    • \b 对应 8
  • \b在 python3 的字符串里的作用是实现退格
    • 你发现了 12a 变成 1a 了么?

图片描述

  • \b\x08chr(8)是同一个字符
  • 但是这个\x08是什么意思?

继续转义

  • 这个x08刚好是退格对应字符的 ascii 值
    • 退格对应的数值就是8
    • 但是这个 x 是什么意思?
  • 08 是 10 进制还是 16 进制?

图片描述

  • x的意思应该是hexadecimal
    • hex就是大着舌头说six
    • 后面216进制数
    • 刚好对应一个字节

总结

  • 什么是转义?
    • 转义转义转化含义
    • \ 是转义字符
    • \n\r是转义序列
  • 除了\n\r之外还有什么特殊的转义序列吗?
    • \a是 ␇ (bell),
    • \b 退回一格
    • \t 水平制表符
    • \v\f LineFeed
  • 通过 16 进制数值转义
    • \xhh
    • 把(hh)16进制对应的ascii字符输出
  • 如果我们不输入x
    • 会发生什么呢?

图片描述

  • 为什么会这样呢??🤔
  • 我们下次再说!👋