今天咱們繼續(xù)學(xué)習(xí)新一課鸠天,調(diào)用函數(shù) def 的用法,咱們先來看例子:
def name():
print('xiao xin')
name()
name()
def 的用法規(guī)則就是這樣手形,小括號(hào)不能省啥供,小括號(hào)里可以有內(nèi)容也可以沒有內(nèi)容,這里我們稍候代入例子來講库糠,后面還要接冒號(hào)伙狐,后面的代碼就是調(diào)用的代碼,咱們只用輸入 name()瞬欧,就可以調(diào)用上面的代碼了贷屎。
就是像是收納箱一樣,咱們分類了的東西艘虎,放入到了一個(gè)name()的箱子里唉侄,咱們要用到它時(shí),直接輸入箱子的名字name()野建,就能找出里的東西了属划。
好了恬叹,咱們?cè)谶@個(gè)簡(jiǎn)單的例子上加一點(diǎn)東西,讓它豐富起來:
def name(you):
print(you.title()+' it is time to go home')
name('xiao xin')
這里的you叫作形參同眯,'xiao xin'則為實(shí)參绽昼,這里實(shí)參替換了形參,打印出了結(jié)果须蜗,這里的實(shí)參可以換成任意其它的值硅确,也可以無(wú)限次的調(diào)用。
不知道有沒有把大家繞暈?zāi)剡胫啵糠凑耶?dāng)時(shí)學(xué)到這里疏魏,我一下子就聯(lián)想到了之前學(xué)到的input()了,畢竟機(jī)器不與人互動(dòng)晤愧,那就太沒意思了大莫,于是我直接修改了一條代碼,就得到了我想要的結(jié)果:
def name(you):
print(you.title()+' it is time to go home')
name(input('you name'))
上圖是代碼和結(jié)果官份,我在這里提到這個(gè)事只厘,是希望大家把之前講過的東西拿出來用用,填鴨式的學(xué)習(xí)很呆舅巷,也會(huì)慢慢喪失興趣羔味。
實(shí)際上的使用中可能包含多個(gè)形參,因此函數(shù)調(diào)用中也可能包含多個(gè)實(shí)參钠右。向函數(shù)傳遞實(shí)參的方式很多赋元,可使用位置實(shí)參,這要求實(shí)參的順序與形參的順序相同飒房;也可使用關(guān)鍵字實(shí)參搁凸,其中每個(gè)實(shí)參都由變量名和值組成;還可使用列表和字典狠毯。
我們先來看看位置實(shí)參:
def parents(left,right):
print('on the left is '+left)
print('\non the right is '+right)
parents('father','mother')
其實(shí)就是一一對(duì)應(yīng)护糖,順序不能有錯(cuò),中間用逗句隔開嚼松,其它的都和開頭一樣嫡良,沒有太多難點(diǎn)。
我們?cè)賮砜纯搓P(guān)鍵字實(shí)參献酗,用它就不用考慮順序的問題:
def parents(left,right):
print('on the left is '+left)
print('\non the right is '+right)
parents(right='mother',left='father')
有點(diǎn)像賦值的感覺寝受,在關(guān)鍵字實(shí)參中一定要準(zhǔn)確的知道形參名,不然就會(huì)報(bào)錯(cuò)了罕偎。
如果從最開始就知道其中一個(gè)形參對(duì)應(yīng)的實(shí)參羡蛾,我們還可以把它簡(jiǎn)化一下:
def parents(left,right='mother'):
print('on the left is '+left)
print('\non the right is '+right)
parents('father')
這里要注意的是,要按照順序,如果我們把 def parents(left,right='mother')
改成? def parents(right='mother'痴怨,left)? ? 忙干,運(yùn)行代碼就會(huì)發(fā)現(xiàn)出錯(cuò),當(dāng)然我們也可以用關(guān)鍵字來進(jìn)行指定浪藻。
調(diào)用函數(shù)def 也可以和if 結(jié)合使用捐迫,現(xiàn)在我們的名字中有個(gè)字的,也有三個(gè)字的爱葵,我們利用def 來試著寫一寫:
def name(first_name,last_name,middle_name=''):
if middle_name:
name = first_name +' '+ middle_name + ' '+last_name
print(name)
else:
name = first_name+' '+last_name
print(name)
name('yuan','xin','xiao')
name('xiao','xin')
這里有兩個(gè)細(xì)節(jié):1.我沒有用到關(guān)鍵字實(shí)參施戴,所以我把middle_name放在了最后
? ? ? ? ? ? ? ? ? ? ? ? ? ?2.middle_name=' '? ? 給了它一個(gè)字符串
? ? ? ? ? ? ? ? ? ? ? ? ? ?3.middle_name如果不為空,則為True
?
其它的應(yīng)該都好理解了萌丈,我就不細(xì)講了赞哗。
下面還有def與while、列表以及字典的一塊用法辆雾,我們下節(jié)再講肪笋。