Binascii真正存储在哪里?

时间:2018-10-23 14:25:26

标签: python

在深入研究编码/解码时,我在binascii.py中找到了以下部分:

def a2b_base64(*args, **kwargs): # real signature unknown
""" Decode a line of base64 data. """
    pass

据我幼稚的理解,在其他地方将其实现为C。这是在python.exe本身中还是我缺少了什么?

1 个答案:

答案 0 :(得分:1)

Python标准库中没有 binascii.py文件。 Python中的binascii模块完全用C编写;它是在Modules/binascii.c source file中实现的。

将Python安装在系统上时,可以shared library object的形式在.so目录中的.dlllib/pythonx.x/lib-dynload文件中使用。

您发现的是一个 stub文件,以帮助IDE进行内省和自动完成任务。之所以需要这样的文件,是因为用C编写的扩展模块通常不是自省的,您不能总是使用普通的introspection techniques来确定用编译语言编写的函数将接受哪些参数。

请注意,随着使用新的argument clinic system将标准库中越来越多的代码转换为启用自省支持,此类文件正逐渐过时。 binascii模块已更新为从Python 3.4开始使用AC语法,因此您可以直接询问该模块:

>>> import inspect, binascii
>>> inspect.signature(binascii.a2b_base64)
<Signature (data, /)>

该函数接受一个名为data的仅位置参数(请参见Python: What does the slash mean in the output of help(range)?,以了解签名中/的含义或仅位置 意思)。