正确使用ctypes调用_Py_Mangle?

Proper use of ctypes to call _Py_Mangle?

当坐在蘑菇上思考编写一个函数来实现 Python 的名称修改算法的复杂性时,我想到了一个更好的主意。为什么不使用已经编写到语言中的方法来实现这样的目标呢?所以我从我的书包里拿出 ctypes 来帮助完成这项工作并执行了 ctypes.pythonapi._Py_Mangle('Demo', '__test')。瞧,凭空出现了一个错误,说 OSError: exception: access violation reading 0x00000A65646F00A8 并且没有费心去解释这个难题。

与解释器的完整交互如下:

Python 3.4.2 (v3.4.2:ab2c023a9432, Oct  6 2014, 22:16:31) [MSC v.1600 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import ctypes
>>> ctypes.pythonapi._Py_Mangle('Demo', '__test')
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    ctypes.pythonapi._Py_Mangle('Demo', '__test')
OSError: exception: access violation reading 0x00000A65646F00A8

有谁知道需要更改什么才能成功调用 mangling 函数?

感谢eryksun的评论,问题的答案很简单:

>>> from ctypes import pythonapi, py_object
>>> py_mangle = pythonapi._Py_Mangle
>>> py_mangle.argtypes = py_object, py_object
>>> py_mangle.restype = py_object
>>> py_mangle('Demo', '__test')
'_Demo__test'