簡體   English   中英

訪問傳遞給另一個函數的參數

[英]Accessing a parameter passed to one function in another function

我有兩個功能:

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 ,但是它們是用於檢查函數內部而不是外部的參數。

是的,取決於您的需求。 最好的方法是在主程序中詢問,然后在調用它時將值簡單地傳遞給每個函數。 另一種可能性是讓一個函數調用另一個函數。

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

理想情況下,我將能夠像在課堂上一樣使用某些東西。 像f1.p1這樣可能嗎?

這是一種先進的技術,通常是危險的做法。 是的,您可以進入調用堆棧,獲取函數對象,並獲取局部變量-但是該函數必須處於活動狀態才能使用任何語義。

您介紹的情況並非如此。 在您的代碼中,您分別調用了f1f2 f1返回后, p1的值會從堆棧中彈出並丟失。

如果你有F1 F2通話,那么它可能用於f達到回其父和訪問信息。 不要去那 :-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM