[oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

简介: [oeasy]python0066_控制序列_光标位置设置_ESC_逃逸字符_CSI

光标位置

回忆上次内容

  • 上次讲了 三引号的输出
  • 三引号中
  • 回车和引号 都会 被原样输出
  • \ 还是需要从 \\转义
  • 黑暗森林 快被摸排清了
  • 还有哪个 转义序列
  • 没 研究过吗?🤔

  • \e是 干什么的?🤔

回忆转义

  • 转义转义
  • 转化含义

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

转义 Escape

  • \e是什么意思呢?

  • 转义之后的的含义竟然是 escape

搜索结果

  • 来捋一捋🤔

  • \是转义字符
  • 要和后面的字符一起构成转义序列
  • \e是转义序列
  • 转义的含义是 escape
  • 所谓转义转义
  • 转化含义
  • 转义序列\e对应的字符含义是Escape
  • 再次逃逸出去
  • 能逃去到哪里呢?

逃逸

  • 从标准输出序列中逃逸出来

  • 可以让输出
  • 从当前的字符串序列中
  • 逃逸(Escape)出去
  • 后面的内容
  • 可就不是 输出的文本 了
  • 而是 控制序列(Control Sequence)
  • [10;20H 控制 输出位置
  • 第10行第20列进行输出
  • 这种控制方法
  • 在今天被称为
  • ANSI escape code 标准
  • 我们来试试

动手实验

  • 真的可以定位输出
  • 从正常的输出流逃逸到了控制序列!!!

  • 那为什么有控制序列呢?

缘起

  • 电传打字机 输出的颜色
  • 只能通过 控制色带(类似于墨盒)
  • 来控制 打印颜色的深浅
  • 是物理过程

  • 早期的终端
  • 通过调节 显示器亮度 来改变显示效果
  • 各个终端的 制造商
  • 都有 自己独特的 控制字符
  • 这些特殊字符 是和 机器相关 的
  • 彼此 并不兼容
  • 但只要 接受到 这些控制字符
  • 终端 就可以 调整输出方式
  • 比如
  • 在 某个横纵坐标位置[x,y]
  • 输出字符
  • 这就是 数字过程了

统一标准

  • 但是不同终端
  • 控制方式不同
  • 可能 造成显示状态 异常
  • 远程终端输出结果不可控
  • 需要一个关于控制字符的统一标准
  • 1964 年 ISO 646
  • 在欧洲以ECMA-6的形式存在
  • 后来被ANSI(American National Standards Institute)
  • 整合为工业标准
  • 叫做 ANSI X3.64

  • 是不是很像ascii
  • 而且包括了 整个黑暗森林
  • 本来 在各种电传打字机 中实现支持
  • 现在在 terminal软件 中实现支持

esc 键

  • Teletype Model ASR-33 终端键盘
  • 数据通信行业 最受欢迎的终端之一
  • 1963 年推出
  • 注意 shift 和 ctrl 都已经出现
  • Alt Mode 出现在第 1 列

  • \e这个转义序列 有了对应的按键吗?
  • ALT MODE
  • 是用来 切换模式的 特殊按键
  • 这是当时的 esc 键 吗?

总结

  • 这次了解了 新的转义模式
  • \33 逃逸控制字符 esc
  • 这个字符让输出退出标准输出流
  • 进行控制信息的设置
  • 可以设置光标输出的位置

  • ASR33中的ALT MODE
  • 是 今天的ESC吗????🤔

  • 我们下次再说!👋
  • 蓝桥->https://www.lanqiao.cn/courses/3584
  • github->https://github.com/overmind1980/oeasy-python-tutorial
  • gitee->https://gitee.com/overmind1980/oeasypython
  • 视频->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy
目录
相关文章
|
19天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
103 80
|
26天前
|
人工智能 C语言 Python
[oeasy]python051_什么样的变量名能用_标识符_identifier
本文介绍了Python中变量名的命名规则,强调标识符(identifier)必须以字母或下划线开始,后续可包含字母、下划线及数字。通过`isidentifier()`函数可验证字符串是否为合法标识符。文中还探讨了为何数字不能作为标识符的开头,并提供了相关练习与解答,最后提及这些规则源自C语言的影响。
113 69
|
28天前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
112 68
|
8天前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
29 14
|
2天前
|
存储 Python
[oeasy]python056_python中下划线是什么意思_underscore_理解_声明与赋值_改名字
在Python中,下划线有多种用途。单下划线(_)常用于避免命名冲突,如将`max`改为`max_`以保留内置函数功能。双下划线(__var__)通常用于特殊方法和属性,如`__name__`、`__doc__`等。此外,单下划线(_)在交互式解释器中表示上一次表达式的值,但不建议作为普通变量名使用。总结:下划线用于避免命名冲突及特殊标识。
11 1
|
17天前
|
C语言 Python
[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words
本文介绍了Python的关键字列表及其使用规则。通过回顾`hello world`示例,解释了Python中的标识符命名规则,并探讨了关键字如`if`、`for`、`in`等不能作为变量名的原因。最后,通过`import keyword`和`print(keyword.kwlist)`展示了Python的所有关键字,并总结了关键字不能用作标识符的规则。
29 9
|
24天前
|
Unix 编译器 C语言
[oeasy]python052_[系统开发语言为什么默认是c语言
本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
26 5
|
30天前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
35 9
|
1月前
|
Python 容器
[oeasy]python048_用变量赋值_连等赋值_解包赋值_unpack_assignment _
本文介绍了Python中变量赋值的不同方式,包括使用字面量和另一个变量进行赋值。通过`id()`函数展示了变量在内存中的唯一地址,并探讨了变量、模块、函数及类类型的地址特性。文章还讲解了连等赋值和解包赋值的概念,以及如何查看已声明的变量。最后总结了所有对象(如变量、模块、函数、类)都有其类型且在内存中有唯一的引用地址,构成了Python系统的基石。
30 5
|
2月前
|
存储 Python 容器
[oeasy]python045_[词根溯源]赋值_assignment_usage_使用
本文回顾了上一次讲解的内容,重点讨论了变量的概念及其在各种系统和游戏中的应用。文章详细解释了变量的声明与赋值操作,强调了赋值即为将具体值存储到变量名下的过程。同时,通过例子说明了字面量(如数字0)不能被赋值给其他值的原因。此外,还探讨了“赋值”一词的来源及其英文表达“assignment”的含义,并简要介绍了与之相关的英语词汇,如sign、assign、signal等。最后,总结了本次课程的核心内容,即赋值操作的定义和实现方式。
29 3