立即學習:https://edu.csdn.net/course/play/6521/126666?utm_source=blogtoedu
python的函數、參數
例如:函數名稱爲 testFun
參數名稱分別有a、b、c
函數:
定義——def 函數名稱(參數),參數根據應用場景可有可無
def testFun01():
print("This is my first function!")
def testFun(a):
print(a)
testFun01()
testFun("Welcome to learn Python ^_^")
返回——return
return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。
def testFun01(a, b):
sumNum = a + b
print("a+b=",sumNum)
return sumNum
testFun01(33, 7)
在這裏練習的時候我發現,這個return加和不加,效果都是一樣的。所以,return你到底是來幹嘛的?_?。嗯,小小的糾結了下,查了半天,還是不大懂。要你何用?T_T?
然而它存在就肯定有他的道理,咱不鑽牛角尖不鑽牛角尖(瘋狂暗示自己),後面用多了自然就理解了。若有人可以熱心爲我解釋下,甚是感激(★ ω ★)
參數:佔位
在 python 中,類型屬於對象,變量是沒有類型的
調用參數時使用的參數類型:
- 關鍵字參數:定義時所有參數賦一個默認值,忽略參數順序。
- 默認參數:定義時給參數一個默認值,在調用時不指定參數,會使用默認參數。
- 序列參數:所有參數作爲一個列表傳入。傳參時需要在前面加*,例如:函數名(*列表參數)
- 字典參數:參數作爲一個字典傳入。例如:a={"1":"one","2":"two","3":"three"},調用時加兩個*,
上面的定義是我在上面的視頻中總結到的,咳,沒有寫例子,看着有點繞。爲了加深記憶,我另外又找了菜鳥教程上的相關資料,上面的內容更加詳細一些。不過兩個內容表達有些出入,我是研究了菜鳥教程裏面的內容後完全明瞭的。
菜鳥教程上調用函數時可使用的正式參數類型:必需參數、關鍵字參數、默認參數、不定長參數(即上面的序列參數、字典函數)。
最後我做了個整理,翻譯成我自己容易懂的形式:
必需參數 | 必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。定義時有參數,調用時不傳參會出現語法錯誤 |
關鍵字參數 | 使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因爲 Python 解釋器能夠用參數名匹配參數值。例如:若開始在定義時用testFun(a),則調用時需要用testFun(a = "要傳的參數"),若用testFun()則會報語法錯誤 |
默認參數 | 調用函數時,如果沒有傳遞參數,則會使用默認參數。例如:在定義的時候用testFun(a, b=21),此時在調用時若用testFun(0),會默認將所傳參數當成a,b用默認值。 |
序列參數 | 處理比當初聲明時更多的參數,參數帶一個星號 * ,以元組的形式導入,存放所有未命名的變量參數。例如:定義的函數爲 testFun(a, *b),現在的b就是一個空元組,調用函數時 若用 testFun(10, 20, 30),除了第一個參數,後面的都會以元素組方式傳給b,此時 b = (20, 30) |
字典參數 | 同序列參數使用相似。參數帶兩個星號 **,以字典形式導入,但後面參數必須用關鍵字傳入。例如:定義的函數爲 testFun(a, **b),現在的b就是一個空字典,調用testFun(11, first = 12, second = 13 ),,除了第一個參數,後面的都會以字典方式傳給b,此時 b = {'first':12, 'second':13} |
聲明函數時,參數中星號 * 可以單獨出現,例如:testFun(a, b , *, c),這裏的*並無實際作用只是佔了位置,但傳參的時候,c只能用關鍵字傳入
最後,菜鳥教程中還提到一個匿名函數 lambda ,對於剛剛入門的我來說就不繼續深入瞭解了,後續有需要的時候再看。