2017-03-07 112 views
-1

我有两个功能:访问传递给一个函数中的参数在另一个函数

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,但这些是用于检查函数内的参数,而不是外部。

回答

2

是的,根据您的需要。最好的方法是在主程序中询问,并简单地将该值传递给每个函数。另一种可能性是让一个函数调用另一个函数。

# Main program 
user_input = raw_input("enter data") 
f1(user_input) 
f2(user_input) 

理想情况下我能像你在一个类中使用的东西。 像f1.p1这可能吗?

这是一种先进的技术,一般危险的做法。是的,您可以进入调用堆栈,获取函数对象,并获取局部变量 - 但函数必须处于活动状态才能具有任何语义使用。

这不是你介绍的情况。在代码中,你有F1F2独立地调用。一旦你从F1返回,而P1值被弹出堆栈和丢失。

如果你有F1呼叫F2,则有可能为F2达到回其父和访问信息。 不要去那里。 :-)

+0

你说得对。我已经修改了这个程序。我会upvote你的答案。只是想知道是否有另一种方式,只是为了完整性。我看着使用**操作符,但我不认为这适合我的需要。 –

+1

正确;不合适。这是为了传递指针参数,通常来自Python之外的接口。另外,请记住“接受”并回答,以便可以归档问题。 – Prune

+0

会做。我希望别人会贡献并让我知道,如果像你一样在类中访问像这样的参数,例如:'f1.p1'并将它传递给f2工作。希望这是好的。 –

相关问题