假设我有一些参数传递给函数,我使用这些参数进行一些计算,然后将结果传递给另一个函数,在那里进一步使用它们。我如何将结果传递回第一个函数并跳到一个点,使得数据不会被发送回第二个函数以避免卡在循环中。
这两个函数分为两个不同的python脚本。
我目前正在这样做的方法是添加任何应该来自第二个脚本的新参数作为非关键字参数,并将所有参数从第一个函数传递到第二个函数,即使它们不需要第二。第二个函数将所有参数传递回第一个函数,并在非关键字参数上使用if
条件来检查它是否具有其默认值,以确定数据是否已由第二个函数发回。
在f1.py:
def calc1(a, b, c, d = []):
a = a+b
c = a*c
import f2
f2.calc2(a, b, c)
If d != []: # This checks whether data has been sent by the second argument, in which case d will not have its default value
print(b, d) # This should print the results from f2, so 'b' should
# retain its value from calc1.
return
在另一个脚本(f2.py)
中 def calc2(a, b, c):
d = a + c
import f1
f1.calc1(a, b, c, d) # So even though 'b' wasn't used it is there in
# f2 to be sent back to calc1
return
答案 0 :(得分:1)
有两个方法递归调用彼此通常是个坏主意。两个文件之间特别糟糕。您似乎想要致电calc1()
,让其在内部致电calc2()
,然后根据calc2()
的结果决定做什么。
这是你想要做的吗?
#### f1.py
import f2
def calc1(a, b, c):
a = a+b
c = a*c
d = f2.calc2(a, b, c)
# This checks whether data has been sent by the second argument,
# in which case d will not have its default value
if d:
# This should print the results from f2, so 'b' should retain
# its value from calc1.
print(b, d)
#### f2.py
def calc2(a, b, c):
return a + c