Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
允许导入的python函数调用其他导入的python函数_Python_Function_Import - Fatal编程技术网

允许导入的python函数调用其他导入的python函数

允许导入的python函数调用其他导入的python函数,python,function,import,Python,Function,Import,这是我第一次导入自己的脚本,对于导入的函数如何与其他导入的函数交互,我有一些疑问。这就是我的脚本当前的样子: from file1 import function1 from file2 import function2 function1() 函数1如下所示: def function1(): option = input('Option: ') if option == 'function 2': function2() 函数2的内容如下所示: def

这是我第一次导入自己的脚本,对于导入的函数如何与其他导入的函数交互,我有一些疑问。这就是我的脚本当前的样子:

from file1 import function1
from file2 import function2

function1()
函数1如下所示:

def function1():
    option = input('Option: ')
    if option == 'function 2':
        function2()
函数2的内容如下所示:

def function2():
    option = input('Option: ')
    if option = 'function 1':
        function1()

每当我运行它时,它都会给我一个错误,即未定义function2。我尝试在彼此之间导入这两个脚本,但这会导致循环导入。我这样做的主要目的是为了更好地组织一个脚本的函数,因此我想知道是否有一种方法可以实现两个导入的函数相互引用,或者我是否应该忘记它。

如果
function1
调用
function2
function2
必须导入到
file1.py

您的项目布局应按以下方式组织:

file1.py

file2.py

main.py


请分享所有相关的代码和项目的设置方式——我相信你需要的东西是可以做到的,但是如果你不告诉我们你在做什么,就不可能告诉你你做错了什么。你似乎认为python使用了类似动态作用域的东西。它没有,它使用词法范围。您的
function1
将尝试在定义它的范围内搜索可用的
function2
,而不是在调用它的地方。如果你需要
function1
来调用
function2
,它必须能够访问它,要么作为参数传递,要么在它可以到达的某个范围内可用(全局,封闭)。@Grismar我编辑了这篇文章以包含更多信息,很抱歉,我应该在我的第一篇文章(现在编辑)中澄清功能2指的是功能1,功能1指的是功能2。无论何时使用此方法,都会导致循环导入错误,因为两个函数都会相互导入。您确定这就是您想要的吗?它可能导致递归函数调用。你想达到什么目标?也许有更好的实现方式,所以功能1本质上是一个包含n个选项的菜单,如果选择了某个选项,它将运行从不同文件导入的功能。然后,所有这些功能又返回到功能1,因为它们都有返回菜单的选项。我可以将这些都包含在一个文件中,但我正在努力学习更多关于Python的知识,并完成这个项目,我还发现额外的组织非常好。@madamepsychosis,那么您应该将它们放在同一个模块中。我不明白为什么所有这些函数都必须调用function1。它们必须向function1返回值,该值随后将在function1中处理。
from file2 import function2

def function1():
    # function 1 logic
    if condition: 
        function2()
def function2():
    # function2 logic
from file1 import function1

function1()