输入输出示意图
当我们通过键盘向Python解释器或者文件作输入操作时,输入流会同步到显示器,显示器和Python解释器收到相同的字符后,各自采用自己的方式进行处理,当我们通过键盘输入普通字符,例如a,b,c等,显示器会原样输出到屏幕上,Python解释器或者文件也会原样保存到内存,这一点比较好理解,当输入特殊字符enter,tab等键时,显示器和Python解释器会采用不同的处理方式,下面以回车键为例,Python中回车键主要用在两个地方,语句的结束换行,和变量的赋值,现在分别来阐述一下。
一.回车键用在语句之间时
在Python中,回车键表示语句的结束,(有些编程语言不是这么认为的,SQL语句中以分号表示语句的结束),可以在回车键之前加上转义符\转义,让Python解释器认为该回车键不再表示语句的结束,当做普通字符,此时可以用分号表示语句的结束。显示器从键盘同步收到该回车键字符时,会显示换行(显示器遇到字符a,b,c等时会直接显示该字符),即使遇到转义字符\,显示器也会原样输出显示,也就是说,转义字符只对Python解释器有特殊意义,显示器认为转义字符和普通字符a,b,c等没有什么区别
如图:
二.回车键用在变量赋值时
Python中有时需要把回车键当做普通字符赋值给变量以保存到内存中,为此使用了\n键表示,\n键和键盘上直接输入enter键有什么区别呢,下面详细的研究一下
1. a = “abc +enter键+123” 给变量a赋值,先敲字符”abc,在敲回车键,当Python解释器收到enter键时,会认为语句结束,由于我们只输入了一个双引号,所以Python解释器报错,无论交互式还是文件输入都一样
2. a = “abc\ + enter键+123”,在enter键之前加上转义符,则Python解释器不会认为语句结束,同时忽略掉\+enter键,继续等待输入,显示器则会正常输出显示转义符\,并换行显示enter键,等变量赋值完成后,Python解释器不会把转义符和enter键这个字符输出到内存变量中(Python解释器把这两个字符忽略掉了),也就是说变量a没有enter键这个字符,输入完成后,变量a的值为”abc123”,交换式输入和文件输入效果一样。
如图:
3. a = “abc\n123” 为了把回车键当成一个字符保存给变量,所以Python使用了\n字符,给a赋值时,显示器直接显示\n字符,不会换行,当输出变量a时,显示器是显示\n字符,还是把\n转换成换行显示,不同的方式效果不一样,交互式直接输出a时,显示\n,交互式或文件中调用函数print(a)函数输出时,显示换行
4. a = “””abc +enter + 123””” 键盘上先输入三个引号,然后输入abc,在输入enter,最后输入123和三个引号,这样给变量a赋值时,即使没有转义符,Python也不会把enter键解释为语句的结束,不仅在显示器上显示换行,也会把enter键值(\n)赋给变量a,输出a时效果第三条相同
5. a = “””abc\n123””” 这样输入时,输出与第三条相同
其他语言,例如SQL,SHELL等遇到特殊字符时也可以这么理解