非常教程

Python参考手册

语言 | Language

tokenize

源代码: Lib / tokenize.py

tokenize模块为Python源代码提供了一个词法扫描器,并以Python实现。该模块中的扫描器也将评论作为标记返回,从而使其对于实现“漂亮打印机”(包括用于屏幕显示的着色器)非常有用。

为了简化标记流处理,使用通用标记类型返回所有运算符和分隔符令牌token.OP。通过检查tokenize.generate_tokens()标识特定运算符标记的字符序列返回的元组的第二个字段(包含匹配的实际标记字符串)可以确定确切的类型。

主要入口点是一个生成器:

tokenize.generate_tokens(readline)

generate_tokens()生成器需要一个参数readline,它必须是一个可调用的对象,它提供与内置文件对象的readline()方法相同的接口(请参阅文件对象部分)。 对函数的每次调用都应以字符串的形式返回一行输入。 另外,readline可能是一个可调用的对象,通过提高StopIteration来表示完成。

生成器生成这些成员的5元组:令牌类型; 令牌字符串; 一个2元组(srow, scol)ints,用于指定源中源标记开始的行和列; 一个2元组(erow, ecol)inint,用于指定令牌在源中结束的行和列; 和找到令牌的行。传递的行(最后一个元组项)是逻辑行; 包括延续线。

2.2版本中的新功能。

为保持向后兼容性而保留较旧的入口点:

tokenize.tokenize(readline[, tokeneater])

tokenize()函数接受两个参数:一个表示输入流,一个提供输出机制tokenize()

第一个参数readline必须是一个可调用对象,它提供与readline()内置文件对象方法相同的接口(请参见文件对象部分)。对函数的每次调用都应以字符串的形式返回一行输入。或者,readline可能是一个可调用的对象,通过提升表示完成StopIteration

在版本2.5中进行了更改:添加了StopIteration支持。

第二个参数tokeneater也必须是可调用的对象。它为每个标记调用一次,有五个参数,对应于生成的元组generate_tokens()

token模块中的所有常量也会从中导出tokenize,以及可能通过以下方式传递给tokeneater函数的两个附加标记类型值tokenize()

tokenize.COMMENT

令牌值用于表示注释。

tokenize.NL

令牌值用于指示非终止换行符。NEWLINE标记表示Python代码的逻辑行结束; 当一条逻辑代码行在多条物理线路上继续时,会生成NL令牌。

提供另一个功能来反转标记化过程。这对于创建令牌化脚本,修改令牌流和回写修改的脚本的工具很有用。

tokenize.untokenize(iterable)

将令牌转换回Python源代码。该迭代必须具有至少两个元件,所述令牌类型和令牌字符串返回序列。任何其他序列元素都将被忽略。

重建的脚本作为单个字符串返回。结果保证将标记返回以匹配输入,以便转换无损并确保往返。保证仅适用于令牌类型和令牌字符串,因为令牌之间的间距(列位置)可能会发生变化。

2.5版本中的新功能。

exception tokenize.TokenError

当可能分成多行的文档字符串或表达式未在文件中的任何位置完成时引发,例如:

"""Beginning of
docstring

或者:

[1,
 2,
 3

请注意,未封闭的单引号字符串不会导致引发错误。它们被标记为ERRORTOKEN,然后标记它们的内容。

将浮点文字转换为Decimal对象的脚本重写器示例:

def decistmt(s):
    """Substitute Decimals for floats in a string of statements.

    >>> from decimal import Decimal
    >>> s = 'print +21.3e-5*-.1234/81.7'
    >>> decistmt(s)
    "print +Decimal ('21.3e-5')*-Decimal ('.1234')/Decimal ('81.7')"

    >>> exec(s)
    -3.21716034272e-007
    >>> exec(decistmt(s))
    -3.217160342717258261933904529E-7

    """
    result = []
    g = generate_tokens(StringIO(s).readline)   # tokenize the string
    for toknum, tokval, _, _, _  in g:
        if toknum == NUMBER and '.' in tokval:  # replace NUMBER tokens
            result.extend([
                (NAME, 'Decimal'),
                (OP, '('),
                (STRING, repr(tokval)),
                (OP, ')')
            ])
        else:
            result.append((toknum, tokval))
    return untokenize(result)
Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法