2016-05-14 36 views
-2

嘿,夥計們在這裏真正的noob問題,關於蟒蛇(在許多編碼語言使用)

def get_gender(sex = 'Unknown'): 
if sex is 'm': 
    sex = "Male" 
elif sex is 'f': 
    sex = "Female" 
print(sex) 

上面的代碼是由新波士頓的教程一個簡單的程序,我已經看到了很多不同的地方這特別是一段代碼def get_gender(sex = 'Unknown'):之前使用(不是實際的代碼本身,但它是如何使用的,即:(sex = 'Unknown'):),但不太清楚如何在我自己的程序中使用它。我只是想知道,如果有人能夠讓我瞭解爲什麼這個特定的變量在get_gender旁邊的括號中,它用於什麼,它與在函數內部聲明變量有什麼不同,可能只是一些例子可以使用的方式。

我希望這是有道理的,我非常感激任何幫助。 謝謝

+0

縮進錯誤,性別=「未知」設置一個默認值,如果沒有性被傳遞給函數,即它不帶參數調用: get_gender() – Schore

+1

'(sex ='Unknown')'表示函數中的參數'sex'是可選的。閱讀關於[關鍵字參數]的文檔(https://docs.python.org/2/tutorial/controlflow.html#keyword-arguments)。 –

回答

0

這種模式被稱爲default argument這意味着呼叫者可能不會選擇傳遞特定參數(例如:在您的情況下爲sex)。如果參數未被調用者傳遞,該函數將使用默認值(在您的案例中爲sex = unknown)。

這種模式最常見的用例是函數在大多數情況下傾向於用特定值調用。

例如, python中的find有兩個默認參數startend

庫設計者認爲find的常見使用模式是搜索特定的string的整個字符串。所以startend默認值是0len(string)

有些語言還通過function overloading提供此功能。所以你創建了兩個函數find(substring, start, end)find(substring)。後者可以在內部稱前者爲find(substring, 0, length)

注意一些人們推開prefer function overloading over default argument