python——函數(shù)
一药薯,函數(shù)的創(chuàng)建與調(diào)用
? 開展之前薄料,先說一下為什么要有函數(shù)存在:
? 假如每當(dāng)我們實(shí)現(xiàn)同一個(gè)功能,就要重新輸入代碼仍源,是不是太麻煩了心褐?如果我們能把這段代碼封裝起來,用一個(gè)名稱代替笼踩,每次使用到這個(gè)功能就用名稱調(diào)用檬寂,是不是非常爽。這就是函數(shù)存在的意義戳表。
創(chuàng)建函數(shù)的格式:
##### def function_name () :
##### 代碼塊
>>>def myfirstfunction():
print("人生苦短,我學(xué)python昼伴!")
## 調(diào)用函數(shù)
>>> myfirstfunction()
人生苦短匾旭,我學(xué)python!
函數(shù)后面的小括號(hào)是什么呢?請(qǐng)看下面:
二圃郊,函數(shù)的參數(shù)
? 同樣价涝,先說一下為什么要有參數(shù)的存在:
? 試想一下,假如括號(hào)里任何東西都沒有持舆,每當(dāng)我們調(diào)用函數(shù)時(shí)色瘩,每次執(zhí)行的語句都一樣,當(dāng)碰到其他情況了怎么辦呢逸寓?所以居兆,參數(shù)的存在就是為了實(shí)現(xiàn)函數(shù)的個(gè)性化,使得函數(shù)能應(yīng)用不同的要求竹伸。
>>> def mysecondfunction(language):
print("人生苦短泥栖,我學(xué){}".format(language))
>>> mysecondfunction("R")
人生苦短,我學(xué)R
>>> mysecondfunction("python")
人生苦短勋篓,我學(xué)python
對(duì)于.format()字符串格式化的使用吧享,請(qǐng)看Python的基本數(shù)據(jù)類型
我們可以發(fā)現(xiàn),當(dāng)我們通過參數(shù)傳入不同的內(nèi)容時(shí)譬嚣,函數(shù)會(huì)根據(jù)我們的需求钢颂,打印出我們想要的結(jié)果,是不是很神奇拜银?
三殊鞭,函數(shù)的返回值
? 老規(guī)矩,為什么會(huì)有函數(shù)返回值的存在呢:
? 顧名思義盐股,我們執(zhí)行函數(shù)要的就是其返回值钱豁。return語句用來結(jié)束函數(shù)并將程序返回到調(diào)用函數(shù)的位置,繼續(xù)執(zhí)行下面的程序疯汁。
## 很簡(jiǎn)單牲尺,只需要在函數(shù)中使用關(guān)鍵字return,后面跟著指定要返回的值
>>> def add(a,b):
return a + b
>>> add(1,3)
4
四,函數(shù)參數(shù)的具體理解
? 參數(shù)既然能神奇的讓函數(shù)變得個(gè)性化谤碳,自然它的靈活度就決定了函數(shù)的靈活度溃卡。下面談?wù)勎覍?duì)函數(shù)參數(shù)的一些理解。
1蜒简,形參和實(shí)參:
? 跟絕大多數(shù)編程語言一樣瘸羡,形參指的就是創(chuàng)建函數(shù)時(shí),小括號(hào)里的參數(shù)搓茬,實(shí)參就是你實(shí)際遞給括號(hào)里的參數(shù)
## 形參就是括號(hào)里的language
>>> def mysecondfunction(language):
print("人生苦短犹赖,我學(xué){}".format(language))
## “R”就是我們傳給函數(shù)的實(shí)參
>>> mysecondfunction("R")
人生苦短,我學(xué)R
2卷仑,關(guān)鍵字參數(shù):
普通的參數(shù)叫位置參數(shù)峻村,顧名思義就是參數(shù)有順序,我們要按照括號(hào)里給定的參數(shù)順序傳遞給函數(shù)锡凝。但是這樣又有問題粘昨,假如我們粗心記錯(cuò)了參數(shù)的順序,傳入?yún)?shù)的順序不正確怎么辦窜锯?關(guān)鍵字參數(shù)給了一個(gè)好的解決辦法张肾。
>>> def play(name = "keyangou" , game = "LOL"):
print(name + " play " + game)
>>> play("老王" , "王者榮耀")
老王 play 王者榮耀
>>> play("王者榮耀" , "老王")
王者榮耀 play 老王
>>> play(game = "王者榮耀" , name = "老王")
老王 play 王者榮耀
? 當(dāng)我們指定關(guān)鍵詞的時(shí)候,就不用擔(dān)心順序問題啦~~~~
3锚扎,默認(rèn)參數(shù)
? 默認(rèn)參數(shù)很好理解吞瞪,就是在括號(hào)里給形參一個(gè)默認(rèn)值,使得在調(diào)用函數(shù)時(shí)工秩,即使不填寫該參數(shù)尸饺,也不會(huì)報(bào)錯(cuò),并且以給定的默認(rèn)值執(zhí)行函數(shù)助币。
>>> def play(name = "keyangou" , game = "LOL"):
print(name + " play " + game)
keyangou play LOL
注意 :大家創(chuàng)建的函數(shù)有默認(rèn)參數(shù)時(shí)浪听,一定要把默認(rèn)參數(shù)放在最后!
4眉菱,收集參數(shù)
? 收集參數(shù)為什么會(huì)存在迹栓?
? 作者寫函數(shù)的時(shí)候,也不知道函數(shù)到底需要幾個(gè)參數(shù)....所以俭缓,這種情況僅需在參數(shù)前面加上星號(hào)(*)即可
>>> def test(*params):
print("有{}個(gè)參數(shù)".format(params))
print("第二個(gè)參數(shù)是:",params[1])
>>> test("G" , "o","l","d")
有('G', 'o', 'l', 'd')個(gè)參數(shù)
第二個(gè)參數(shù)是: o
注意:在使用收集參數(shù)時(shí)克伊,收集參數(shù)后面的參數(shù)一定要用關(guān)鍵參數(shù)來指定,否則python都會(huì)把你的實(shí)參列入收集參數(shù)的范疇华坦!