我有两个功能:
def f1(p1=raw_input("enter data")):
...do something
def f2(p2=raw_input("enter data")):
...do something else
p1和p2是相同的数据,所以我想避免要求输入两次。有没有办法可以将提供给f1的参数传递给f2而不再要求它?理想情况下,我可以使用类似于你在课堂上的东西。像f1.p1
这可能吗?
inspect
和locals
,但这些用于检查函数内的参数,而不是外部。
答案 0 :(得分:2)
是的,视您的需要而定。最好的方法是在主程序中询问,并在调用它时简单地将该值传递给每个函数。另一种可能性是让一个函数调用另一个函数。
# Main program
user_input = raw_input("enter data")
f1(user_input)
f2(user_input)
理想情况下,我可以像在课堂上一样使用。 像f1.p1这可能吗?
这是一种先进的技术,通常是危险的做法。是的,你可以进入调用堆栈,获取函数对象,并获取局部变量 - 但是函数必须是活动的才能使用它。
你提出的情况并非如此。在您的代码中,您可以单独调用 f1 和 f2 。从 f1 返回后, p1 的值会从堆栈中弹出并丢失。
如果你有 f1 ,请致电 f2 ,那么 f2 就可以回到其父级了访问信息。 不要去那里。: - )