如何在本地函数中使用导入模块中的函数?

How to use a function from imported module within a local function?

我有一个 python 模块 a.py:

def fun ( c, d, e, f ):
    print ( c + d + e + f )

在我的 main.py:

from a import *

def fun1 ():
    c = 'hello '
    d = 'how '
    e = 'are '
    f = 'you?'
    fun (c, d, e, f)

fun1 ()

为什么我收到错误:

NameError: global name 'fun' is not defined

我也试过:

from a import *

def fun1 ():
    global fun
    c = 'hello '
    d = 'how '
    e = 'are '
    f = 'you?'
    fun (c, d, e, f)

fun1 ()

错误依旧。

您需要将 __init__.py 添加到 a.py 所在的同一文件夹中。

如果您的 main.py 不在同一个文件夹中,您需要将 a.py 所在文件夹的目录附加到您的 sys.path.

如果文件夹结构如下所示:

./a_folder/a.py
./a_floder/__init__.py
./main_folder/main.py

main.py中的代码应该是:

import sys
sys.path.append('../a_floder/')
from a import *

如果文件夹结构如下所示:

./a.py
./__init__.py
./main.py

main.py中的代码应该是:

from a import *