python學習過程中重要的知識點函式。
1. 函式的定義:
使用關鍵字***def***
def
sayhello
():print
"hello word"
以上函式功能只是做了簡單的螢幕輸出
2.函式呼叫
函式定義完之後,需要顯示呼叫才能執行函式體裡的**
sayhello()
在顯示的呼叫了sayhello()函式的時候,在螢幕上就直接列印出了」hello world」 字串。
3.帶有引數的函式
以上只是定義的函式只是最簡單的函式定義和呼叫,我們也可以在函式定義的時候,設定函式的引數,此時的引數稱為形參
def
sayhello
(name):
print
"hello word "+name
『+』 號用於字串的鏈結,傳入的引數只能是字串,反之會報錯
4.帶有返回值的函式
有時候函式處理完一系列邏輯之後,要給呼叫者返回處理結果,預設返回none
def
getsum
(x,y):
return x+y
函式定義兩個引數,並計算兩個數的值,並返回給呼叫者。
以上是函式的簡單定義,呼叫,帶有引數的函式定義,函式的返回值,接下來說下函式呼叫過程中的需要主要的問題5.冗餘引數處理
現在我們重新定義乙個帶有乙個引數的函式
def
printinfo
(name):
print name
定義之後,我們呼叫函式,正常普通的呼叫。
printinfo("tom")
螢幕輸出為:tom,但是我這裡呼叫函式的時候,傳的是乙個值,但是我要傳多個值呢或者我要是不傳值呢?
首先我們來看下我不傳值會有什麼問題
printinfo()
程式報錯
traceback (most recent call last):
file
"/users/zhangyibo/pycharmprojects/demo/demo/demo2.py", line 86, in
printinfo()
typeerror: printinfo() takes exactly 1 argument (0 given)
根據錯誤資訊可以看出是乙個型別錯誤,說這函式需要傳遞乙個引數,但是實際沒有傳遞引數。這個時候怎麼辦呢?那我就是不想傳遞引數,我還想執行函式呢?有沒有辦法?這個必須是有滴,不過我們需要重新定義此函式如下:
def
printinfo
(name="tom"):
print name
就是這個函式公升級函式,就是在引數的後面加了個預設值,就可以解決了。
可是如果我們要是傳遞多個引數呢?
printinfo
("tom","lucy")
沒錯又報錯了,趕緊看下錯誤吧
typeerror: printinfo() takes at most 1 argument (2
given)
沒錯說傳遞了多餘的引數。那這又怎麼辦呢,放心還又解決方案重新定義函式:
def
printinfo
(name="tom",*args):
print name
print args
重新呼叫,發現不報錯了,那*args是什麼呢?其實就是告訴程式可以接受多個引數,並把多餘的引數以元祖的方式儲存起來。
printinfo
("tom","lucy","kitty")
現在傳遞三個引數也沒問題了哈哈。
好像函式也就這麼多東西,基本簡單的函式使用也就這些,但是我們來研究下函式的更高階的特性首先我們來定義乙個兩個引數的函式
def
getinfo
(name,age):
print
"name:",name,"age:",age
定義了乙個普通的函式,我們正常呼叫的時候就是傳遞兩個引數的值進去就ok但是現在我又個列表
lists=["tom",13]
我這個列表裡邊也有兩個字段,我現在能getinfo(lists)
這樣的方式呼叫嗎?如果你看了上邊的內容就非常肯定的說不能,會有typeerror的,沒錯,那怎麼才能我以lists為引數傳遞進去不報錯呢,這裡我們沒必要修改函式,只需要修改函式掉呼叫方式就行
getinfo
(*lists)
ok完美解決了,*號就是告訴函式我是個列表
那現在我們有個字典形式的資料dic=
我們單獨把字典傳進入如何如何呢getinfo(dic)
沒錯它又報錯了,這個怎麼辦乙個是告訴函式我穿進去的是乙個列表,那字典怎麼表示呢,getinfo(**dic)
沒錯就是*去表示接受的是乙個字典。
是不是很神奇呢,但是我又有乙個奇怪的想法,我定義乙個如下的函式:
def
saycat
(name):
print name
函式是正經函式,但是呼叫正經不正經我就不知道了哈哈
我們可以這樣呼叫
saycat(「tom」)
saycat(「tom」,1)
saycat(「tom」,age=1)
1正常,但是2和3呢是什麼鬼,肯定報錯把,你猜的沒錯,這可怎麼辦呢,函式定義規定傳入乙個引數,我們這裡傳入的是多個引數,而且引數型別還不一樣,那麼我們根據多餘的引數,去修改完善你的函式的健壯性把。
def
saycat
(name,*aggs,**kwargs):
print name
print aggs
print kwargs
以上是簡單的函式冗餘引數的處理方案,以上內容就是所有簡單函式定義,呼叫,和呼叫過程中引數冗餘問題的解決,雖然簡單,但是好記性不如爛筆頭,以此筆記作為參考。如有不當多多包含
Python學習筆記 Python之函式
1.函式引數函式定義的時候自己定義的引數,稱為形參 函式呼叫時候,其引數為實參,即實際要傳遞的引數 舉例 def pname username username 形參 print username pname python 傳遞了乙個實參 args是接受所有未命名的引數 關鍵字 是乙個元組型別 ag...
Python學習筆記 Python之函式
1.函式引數函式定義時,自己定義的引數,稱為形參 函式呼叫時,其引數為實參,即實際要傳遞的引數 舉例 def pname username username 形參 print username pname python 傳遞了乙個實參 args是接受所有未命名的引數 關鍵字 是乙個元組型別 agrs...
Python學習筆記之 函式式程式設計
函式式程式設計的乙個特點就是,允許把函式本身作為引數傳入另乙個函式,還允許返回乙個函式。變數可以指向函式 f abs f 10 10函式名也是變數 abs 10 abs 10 traceback most recent call last file line 1,in typeerror int o...