跳转到主要内容

未提供项目描述

项目描述



Build GitHub


Tokenizers

提供今天最常用的分词器的实现,重点关注性能和多功能性。

基于 Rust 实现的绑定。如果您对高级设计感兴趣,可以去那里查看。

否则,让我们深入探讨!

主要功能

  • 使用4个预制的分词器(Bert WordPiece 和 3 种最常见的 BPE 版本)训练新词汇并进行分词。
  • 由于 Rust 实现而非常快速(包括训练和分词),在服务器的 CPU 上分词 1GB 文本不到 20 秒。
  • 易于使用,但也非常多功能。
  • 适用于研究和生产。
  • 标准化带有对齐跟踪。始终可以获取与给定标记相对应的原始句子的一部分。
  • 执行所有预处理:截断、填充,添加模型需要的特殊标记。

安装

使用 pip

pip install tokenizers

从源代码

要使用此方法,您需要安装 Rust

# Install with:
curl https://sh.rustup.rs -sSf | sh -s -- -y
export PATH="$HOME/.cargo/bin:$PATH"

Rust 安装后,您可以按照以下步骤进行编译

git clone https://github.com/huggingface/tokenizers
cd tokenizers/bindings/python

# Create a virtual env (you can use yours as well)
python -m venv .env
source .env/bin/activate

# Install `tokenizers` in the current virtual env
pip install -e .

从 Hub 加载预训练的分词器

from tokenizers import Tokenizer

tokenizer = Tokenizer.from_pretrained("bert-base-cased")

使用提供的分词器

我们提供了一些预构建的分词器来覆盖最常见的用例。您可以使用一些 vocab.jsonmerges.txt 文件轻松加载其中之一

from tokenizers import CharBPETokenizer

# Initialize a tokenizer
vocab = "./path/to/vocab.json"
merges = "./path/to/merges.txt"
tokenizer = CharBPETokenizer(vocab, merges)

# And then encode:
encoded = tokenizer.encode("I can feel the magic, can you?")
print(encoded.ids)
print(encoded.tokens)

并且您可以像这样简单地训练它们

from tokenizers import CharBPETokenizer

# Initialize a tokenizer
tokenizer = CharBPETokenizer()

# Then train it!
tokenizer.train([ "./path/to/files/1.txt", "./path/to/files/2.txt" ])

# Now, let's use it:
encoded = tokenizer.encode("I can feel the magic, can you?")

# And finally save it somewhere
tokenizer.save("./path/to/directory/my-bpe.tokenizer.json")

提供的分词器

  • CharBPETokenizer:原始的 BPE
  • ByteLevelBPETokenizer:BPE 的字节级版本
  • SentencePieceBPETokenizer:与 SentencePiece 使用的 BPE 兼容的 BPE 实现
  • BertWordPieceTokenizer:著名的 Bert 分词器,使用 WordPiece

所有这些都可以像上面解释的那样使用和训练!

构建自己的

当提供的分词器无法满足您的自由度时,您可以构建自己的分词器,通过将所有不同的部分组合在一起。您可以查看我们如何实现提供的分词器 并轻松地根据您自己的需求进行修改。

构建字节级 BPE

以下是一个示例,展示如何通过将所有不同的部分组合在一起来构建自己的字节级 BPE,并将其保存到单个文件中

from tokenizers import Tokenizer, models, pre_tokenizers, decoders, trainers, processors

# Initialize a tokenizer
tokenizer = Tokenizer(models.BPE())

# Customize pre-tokenization and decoding
tokenizer.pre_tokenizer = pre_tokenizers.ByteLevel(add_prefix_space=True)
tokenizer.decoder = decoders.ByteLevel()
tokenizer.post_processor = processors.ByteLevel(trim_offsets=True)

# And then train
trainer = trainers.BpeTrainer(
    vocab_size=20000,
    min_frequency=2,
    initial_alphabet=pre_tokenizers.ByteLevel.alphabet()
)
tokenizer.train([
    "./path/to/dataset/1.txt",
    "./path/to/dataset/2.txt",
    "./path/to/dataset/3.txt"
], trainer=trainer)

# And Save it
tokenizer.save("byte-level-bpe.tokenizer.json", pretty=True)

现在,当您想使用这个分词器时,就像这样简单

from tokenizers import Tokenizer

tokenizer = Tokenizer.from_file("byte-level-bpe.tokenizer.json")

encoded = tokenizer.encode("I can feel the magic, can you?")

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

tokenizers-0.20.0.tar.gz (337.4 kB 查看散列)

上传时间

构建分布

tokenizers-0.20.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl (9.3 MB 查看散列)

上传时间 PyPy musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl (9.0 MB 查看散列)

上传时间 PyPy musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ i686

tokenizers-0.20.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传时间: PyPy macOS 11.0+ ARM64

tokenizers-0.20.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传时间: PyPy macOS 10.12+ x86-64

tokenizers-0.20.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传时间: PyPy musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传时间: PyPy musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ i686

tokenizers-0.20.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

tokenizers-0.20.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传于 PyPy macOS 10.12+ x86-64

tokenizers-0.20.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传于 PyPy musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传于 PyPy musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686

tokenizers-0.20.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

tokenizers-0.20.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传于 PyPy macOS 10.12+ x86-64

tokenizers-0.20.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传于 PyPy musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传时间: PyPy musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ i686

tokenizers-0.20.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传时间: PyPy manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-pp37-pypy37_pp73-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传时间: PyPy macOS 10.12+ x86-64

tokenizers-0.20.0-cp312-none-win_amd64.whl (2.3 MB 查看哈希值)

上传时间: CPython 3.12 Windows x86-64

tokenizers-0.20.0-cp312-none-win32.whl (2.1 MB 查看哈希值)

上传时间: CPython 3.12 Windows x86

tokenizers-0.20.0-cp312-cp312-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传时间: CPython 3.12 musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-cp312-cp312-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传时间: CPython 3.12 musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.3 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ s390x

tokenizers-0.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.0 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ ppc64le

tokenizers-0.20.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ i686

tokenizers-0.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.8 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ ARMv7l

tokenizers-0.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-cp312-cp312-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传时间: CPython 3.12 macOS 11.0+ ARM64

tokenizers-0.20.0-cp312-cp312-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传时间: CPython 3.12 macOS 10.12+ x86-64

tokenizers-0.20.0-cp311-none-win_amd64.whl (2.3 MB 查看哈希值)

上传时间: CPython 3.11 Windows x86-64

tokenizers-0.20.0-cp311-none-win32.whl (2.1 MB 查看哈希值)

上传时间: CPython 3.11 Windows x86

tokenizers-0.20.0-cp311-cp311-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传时间: CPython 3.11 musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-cp311-cp311-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传于 CPython 3.11 musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.3 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ s390x

tokenizers-0.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.0 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ppc64le

tokenizers-0.20.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ i686

tokenizers-0.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.8 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARMv7l

tokenizers-0.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-cp311-cp311-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.11 macOS 11.0+ ARM64

tokenizers-0.20.0-cp311-cp311-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.11 macOS 10.12+ x86-64

tokenizers-0.20.0-cp310-none-win_amd64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

tokenizers-0.20.0-cp310-none-win32.whl (2.1 MB 查看哈希值)

上传于 CPython 3.10 Windows x86

tokenizers-0.20.0-cp310-cp310-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-cp310-cp310-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传于 CPython 3.10 musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.3 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ s390x

tokenizers-0.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.0 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ppc64le

tokenizers-0.20.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686

tokenizers-0.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.8 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARMv7l

tokenizers-0.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-cp310-cp310-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

tokenizers-0.20.0-cp310-cp310-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.12+ x86-64

tokenizers-0.20.0-cp39-none-win_amd64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

tokenizers-0.20.0-cp39-none-win32.whl (2.1 MB 查看哈希值)

上传于 CPython 3.9 Windows x86

tokenizers-0.20.0-cp39-cp39-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-cp39-cp39-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ s390x

tokenizers-0.20.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.0 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ppc64le

tokenizers-0.20.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686

tokenizers-0.20.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.8 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARMv7l

tokenizers-0.20.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-cp39-cp39-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.9 macOS 11.0+ ARM64

tokenizers-0.20.0-cp39-cp39-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.9 macOS 10.12+ x86-64

tokenizers-0.20.0-cp38-none-win_amd64.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

tokenizers-0.20.0-cp38-none-win32.whl (2.1 MB 查看哈希值)

上传时间 CPython 3.8 Windows x86

tokenizers-0.20.0-cp38-cp38-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-cp38-cp38-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.3 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ s390x

tokenizers-0.20.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.0 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ppc64le

tokenizers-0.20.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ i686

tokenizers-0.20.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.8 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARMv7l

tokenizers-0.20.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-cp38-cp38-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

tokenizers-0.20.0-cp38-cp38-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.8 macOS 10.12+ x86-64

tokenizers-0.20.0-cp37-none-win_amd64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.7 Windows x86-64

tokenizers-0.20.0-cp37-none-win32.whl (2.1 MB 查看哈希值)

上传于 CPython 3.7 Windows x86

tokenizers-0.20.0-cp37-cp37m-musllinux_1_1_x86_64.whl (9.3 MB 查看哈希值)

上传于 CPython 3.7m musllinux: musl 1.1+ x86-64

tokenizers-0.20.0-cp37-cp37m-musllinux_1_1_aarch64.whl (9.0 MB 查看哈希值)

上传于 CPython 3.7m musllinux: musl 1.1+ ARM64

tokenizers-0.20.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

tokenizers-0.20.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (3.3 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ s390x

tokenizers-0.20.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.0 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ ppc64le

tokenizers-0.20.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (3.0 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ i686

tokenizers-0.20.0-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.8 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ ARMv7l

tokenizers-0.20.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ ARM64

tokenizers-0.20.0-cp37-cp37m-macosx_11_0_arm64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.7m macOS 11.0+ ARM64

tokenizers-0.20.0-cp37-cp37m-macosx_10_12_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.7m macOS 10.12+ x86-64

由以下支持