允许导入的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()