Python 解释器包括两个主要的子系统:一个是表达式解析器,负责处理数字表达式;另一个是解释器,负责程序的实际执行,不是只能解析孤立的表达式。
用上一节介绍的方法就可以实现原始的用户输入/输出.下边的函数从标准输入读取一行文本,然后返回这行文本: 内建函数raw_input(prompt)也可以从stdin中读取并保存内容: 最后要说的是。
键盘中断(通常是Ctrl+C)会引发KeyboardInterrupt异常,该异常可以被异常处理语句捕获并处理。只要需要,sys.stdout、 sys.stdin及sys.stderr的值均可以使用其它文件对象进行替换。这样 print 语句和 raw_input 函数都会使用新值。
在解释器启动时,sys.stdout, sys.stdin及sys.stderr可以分别使用sys.stdout, sys.stdin, 和 sys.stderr这三个名字来访问。注意某些场合 sys.stdout, sys.stdin及sys.stderr的默认值会被改变(通常程序运行在一个集成环境时).例如,当在IDLE下运行Python代码时。
sys.stdin会被开发环境提供的一个行为类似文件对象的对象代替.在这样的场合,低层方法如read(),seek()可能会失效。在系统内部,Unicode 字符串被表示为一个16位整数序列,8-bit 字符串则是一个字节序列, 绝大多数字符串操作被扩展为能够处理更宽范围的字符值。
只要 Unicode 字符串被转换为字节流,就必然会产生一系列问题(需要解决)。首先,要考虑现有软件的兼容性, 对那些仅支持 ASCII或其它 8-bit的软件来说,将 Unicode字符串转化为 ASCII字符串是较好的方法。
其次, 16-bit 字符占用两个字节,字节顺序问题虽然比较无聊但必须考虑。对一个Unicode字符 U+HHLL 来说, 小端法编码方案将低位字节放在前面。即 LL HH;大端法编码方案则将高位字节放在前面,即 HH LL. 就因为这么点问题, 不指定编码方案,你就无法将原始 Unicode 数据写入文件.
要解决这些问题, 只能根据特定的编码规则将 Unicode 字符串进行客观表示。这些规则定义了如何将 Unicode 字符表示为字节序列。在第四章, 针对 unicode()及 s.encode() 首先介绍了编码规则。举例来说:
a = u"Müller"
b = "Hello World"
c = a.encode('utf-8') # Convert a to a UTF-8 string
d = unicode(b) # Convert b to a Unicode string