从其他文件调用时在一个文件中定义的函数

时间:2018-06-03 15:55:52

标签: python

我使用带有ctypes的win32函数 我将所有声明放在一个文件(wrapper)中,并在main文件中使用它们 为什么我得到error该函数未定义? 如果我将声明放在主文件中,一切都按预期工作 两个文件都在同一目录中。

wrapper.py

from ctypes import *
from ctypes import wintypes

# Create ctypes wrapper for Win32 functions we need, with correct argument/return types
_CreateMutex = windll.kernel32.CreateMutexA
_CreateMutex.argtypes = [wintypes.LPCVOID, wintypes.BOOL, wintypes.LPCSTR]
_CreateMutex.restype = wintypes.HANDLE

main.py

import wrapper
_CreateMutex(...)

错误:

NameError: name '_CreateMutex' is not defined

2 个答案:

答案 0 :(得分:0)

有(至少)两种解决方案:

import wrapper
wrapper._CreateMutex()

from wrapper import _CreateMutex
_CreateMutex()

没有详细介绍(可能是https://docs.python.org/3.5/tutorial/modules.html?)

import wrapper

将“包装器”添加到当前命名空间 - 仅此而已,因此名称_CreateMutex()不存在。

答案 1 :(得分:0)

当您导入wrapper.py时,您应该使用: `

import wrapper
wrapper._CreateMutex(...)`