如何在Python中将指针指定为函数的参数?

kir*_*ran 3 python types function

我正在尝试定义一个函数(initdeque()),它接受一个指向deque类实例的指针.所以这就是我的尝试:

from ctypes import *

class deque(Structure):
        pass

deque._fields_ = [("left",POINTER(node)),("right",POINTER(node))]

def initdeque(class deque *p):
        p.left=p.right=None
Run Code Online (Sandbox Code Playgroud)

但是这段代码给出了语法错误:

  def initdeque(class deque *p):
                      ^
  SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

什么是正确的语法?

phi*_*hag 6

没有办法指定Python变量的类型,所以声明initdequeue应该只说:

def initdeque(p):
  p.left = p.right = None
Run Code Online (Sandbox Code Playgroud)

您应该考虑使用初始化程序,而不是使用随机函数进行初始化:

class deque(Structure):
  _fields_ = [("left",POINTER(node)), ("right",POINTER(node))]

  def __init__(self):
    self.left = self.right = None
Run Code Online (Sandbox Code Playgroud)

现在,要创建一个新实例,只需编写

 p = dequeue()
Run Code Online (Sandbox Code Playgroud)

  • @kiran我建议你重新考虑通过ctypes学习Python.结果将是两者都知之甚少. (3认同)
  • @kiran我从经验中说.我用ctypes学习了Python,但仍在尝试恢复. (2认同)