从main导入其他文件并使用函数

2024-10-01 13:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

注意:我减少了我的问题,因此代码只有几行(与600行相比)

我有个问题:我想从main.py导入文件slave.pyslave.py引用来自main.py的函数,当然我得到了NameError: name 'funcFromMain' is not defined

以下是main.py的代码:

import slave

def funcFromMain():
    return 6

print(slave.funcFromSlave())

下面是我的slave.py代码:

def funcFromSlave():
    one = funcFromMain() # <- this doesn't work
    two = 2
    return (one + two)

我得到了确切的错误:(注意,两个文件在完全相同的目录)

Traceback (most recent call last):
  File "C:\Users\PrinceOfCreation\Documents\test\main.py", line 6, in <module>
    print(slave.funcFromSlave())
  File "C:\Users\PrinceOfCreation\Documents\test\slave.py", line 2, in funcFromSlave
    one = funcFromMain()
NameError: name 'funcFromMain' is not defined

我尝试在slave.py的顶部添加import main,但出现以下错误:

Traceback (most recent call last):
  File "C:\Users\PrinceOfCreation\Documents\test\main.py", line 1, in <module>
    import slave
  File "C:\Users\PrinceOfCreation\Documents\test\slave.py", line 1, in <module>
    import main
  File "C:\Users\PrinceOfCreation\Documents\test\main.py", line 6, in <module>
    print(slave.funcFromSlave())
AttributeError: module 'slave' has no attribute 'funcFromSlave'

from slave import funcFromSlave代替main的顶部:

Traceback (most recent call last):
  File "C:\Users\PrinceOfCreation\Documents\test\main.py", line 6, in <module>
    print(funcFromSlave())
  File "C:\Users\PrinceOfCreation\Documents\test\slave.py", line 2, in funcFromSlave
    one = funcFromMain()
NameError: name 'funcFromMain' is not defined

Tags: inpytestimportmainlineusersslave
1条回答
网友
1楼 · 发布于 2024-10-01 13:29:38

首先,不能像这样导入python模块:

import slave.py

一定是的

from slave import funcFromSlave # to get the funcFromSlave function from slave script

您需要确保slave.py位于main.py的同一目录中,或者 您需要精确定位slave.py所在的子目录

对于后面的错误,最好避免循环导入,因为它会产生问题,最好的方法是将funcFromMain()的值发送到funcFromSlave

主.py:

from slave import funcFromSlave

def funcFromMain():
    return 6

print(funcFromSlave(funcFromMain()))

从属.py:

def funcFromSlave(funcFromMain):
    one = funcFromMain
    two = 2
    return (one + two)

运行main.py时的输出:

8

相关问题 更多 >