2017-03-07 154 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工作。希望這是好的。 –

相關問題