print函数-编译系统透视++图解编译原理_

时间:2024-06-29 19:45:43
【文件属性】:

文件名称:print函数-编译系统透视++图解编译原理_

文件大小:9.16MB

文件格式:PDF

更新时间:2024-06-29 19:45:43

Python 学习手册 中文 高清文字版

模拟Python 3.0 print函数 为了圆满结束本章,让我们来看参数匹配用法的最后一个例子。这里看到的代码专门 用于Python 2.6或更早的版本(它在Python 3.0下也能工作,但是没有什么意义):它使用*args 任意位置元组以及**args任意关键字参数字典来模拟Python 3.0 print函数所做的大多数工 作。 正如我们在第11章所了解到的,这实际上不是必需的,因为Python 2.6程序员总是可以 通过如下形式的一个导入来使用Python 3.0的print函数: from __future__ import print_function 然而,为了说明一般性的参数匹配,如下的文件print30.py,用少量可重用的代码做了 同样的工作: """ Emulate most of the 3.0 print function for use in 2.X call signature: print30(*args, sep=' ', end='\n', file=None) """ import sys def print30(*args, **kargs): sep = kargs.get('sep', ' ') # Keyword arg defaults end = kargs.get('end', '\n') file = kargs.get('file', sys.stdout) output = '' first = True for arg in args: output += ('' if first else sep) + str(arg) first = False file.write(output + end) 为了测试它,将其导入到另一个文件或交互提示模式中,并且像Python 3.0 print函数那 样使用它。这里是一个测试脚本testprint30.py(注意,该函数必须叫做"print30",因 为"print"在Python 2.6中是保留字): from print30 import print30 print30(1, 2, 3) print30(1, 2, 3, sep='') # Suppress separator print30(1, 2, 3, sep='...') print30(1, [2], (3,), sep='...') # Various object types print30(4, 5, 6, sep='', end='') # Suppress newline print30(7, 8, 9) print30() # Add newline (or blank line) import sys print30(1, 2, 3, sep='??', end='.\n', file=sys.stderr) # Redirect to file 在Python 2.6下运行的时候,我们得到了与Python 3.0的print函数相同的结果: C:\misc> c:\python26\python testprint30.py 1 2 3 123 1...2...3 1...[2]...(3,) 4567 8 9 1??2??3. 尽管在Python 3.0中没有意义,但运行的时候,结果是相同的。与通常情况一样,Python 的通用性设计允许我们在Python语言自身中原型化或开发概念。在这个例子中,参数匹配 工具在Python代码中与在Python的内部实现中一样的灵活。 使用Keyword-Only参数


网友评论