访问传递给另一个函数中的一个函数的参数

时间:2017-03-07 17:48:19

标签: python

我有两个功能:

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这可能吗?

编辑:为了增加一些清晰度,我研究了使用**运算符解包参数,并且我意识到使用程序主体来访问参数更加清晰。但是,前者与我尝试做的不匹配,这可以更好地理解函数中可访问的内容。我还查看了使用inspectlocals,但这些用于检查函数内的参数,而不是外部。

1 个答案:

答案 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 就可以回到其父级了访问信息。 不要去那里。: - )