在深入研究编码/解码时,我在binascii.py中找到了以下部分:
def a2b_base64(*args, **kwargs): # real signature unknown
""" Decode a line of base64 data. """
pass
据我幼稚的理解,在其他地方将其实现为C。这是在python.exe本身中还是我缺少了什么?
答案 0 :(得分:1)
Python标准库中没有 binascii.py
文件。 Python中的binascii
模块完全用C编写;它是在Modules/binascii.c
source file中实现的。
将Python安装在系统上时,可以shared library object的形式在.so
目录中的.dll
或lib/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)?,以了解签名中/
的含义或仅位置 意思)。