Python學習小結——函數

函數是帶名字的代碼塊,用於完成具體的工作。函數就是為了簡化工作,用於執行特定任務的代碼序列

  • 簡單的函數
  • 實例:
def greet_user(): #def是一個關鍵字,表明你要定義一個函數,這裡的函數不需要任何信息就可以執行 """顯示簡單的問候語""" #這是文檔字符串的註釋,一般用於函數的文檔 print("Hello!") #函數需要做得工作,就是打印這一行代碼#當我們執行代碼塊中的代碼是,只需要:greet_user()#-->Hello!
  • 傳遞參數
  • 有時候,函數需要一些信息然後做一些工作,如果我們要傳入信息,以便可以是函數處理時可以這麼做:
def greet_user(username): """顯示簡單的問候語"""  print("Hello, "+username.title+"!") #這裡並沒有處理,直接就使得函數輸出了greet_user("jhon")#-->Hello, Jhon!
  • 形參和實參:很多時候,我們會搞混這兩個概念,現在我們看看這兩個詞,從字面意思來看。形參:有形無實,從代碼來講這就是一個沒有賦值的變量,不代表任何一個數或字符等類型。實參有具體實意的變量,也就是被賦值過了,代表了一個類型,例如:i=5,這樣i就是代表了5

因此,我們來看函數greet_user(username),函數名括號中username是突然出現的,在未使用毫無實際的意義,我們叫它形參,greet_user("jhon")這裡"jhon"是一個字符串,帶有數據類型,是一個有實際意義的參數,我們叫他實參,調用函數時,實參的值會被形參儲存,在函數中形參就有了實參的值,可以直接對形參進行操作,進而改變實參,或者得到需要實參才能計算的到的數據。(形參改變了,實參不一定會改變,取決於它的類型,是列表時,形參變了實參也會變,但是是數字字符時,實參就不會變)

  • 形參的各種形式
  • (1)多個形參
函數可以傳入多個實參,但是每次使用時必須有對應的實參```python
  • def greet_user(username,age,word):
 """顯示簡單的問候語"""  print("Hello, "+username.title+"!") print("I'm "+age+" year old!") print(word) #這裡並沒有處理,直接就使得函數輸出了 greet_user("jhon",18,"I'm fine") #-->Hello, Jhon! #-->I'm 18 year old! #-->I'm fine #"jhon"-儲存->username字符串 #18-存儲->age數字 #"I'm fine"-儲存->word字符串

當形參的數量大於一個時,務必要注意你想傳入的實參與其一一對應,否則會出現不可預知的問題

(2)關鍵字實參

def greet_user(username,age,word): print("Hello, "+username.title+"!") print("I'm "+age+" year old!") print(word)greet_user(username="jhon",word="I'm fine",age=18)#-->Hello, Jhon!#-->I'm 18 year old!#-->I'm fine

見上面的代碼,我們看見實參的位置並不與形參相對應,這就是關鍵字實參的好處了,關鍵字實參可以讓你在調用時不用考慮形參的位置

(3)默認值

def greet_user(username,word,age=18): print("Hello, "+username.title+"!") print("I'm "+age+" year old!") print(word)greet_user(username="jhon",word="I'm fine")#-->Hello, Jhon!#-->I'm 18 year old!#-->I'm fine

以上,發現在定義函數是多了一行age=18,直接就給這個形參賦值了,這樣來說就可以不需要另外實參來賦值,當然我們也可以傳入覆蓋這個默認值

(4)等效函數調用```pythondef des_pet(pet_name,anim_type="dog"): pass#一個沒有實際意義的代碼,用於測試des_pet('willie')des_pet(pet_name='willie')des_pet('harry','hamster')des_pet(pet_name="harry",anim_type="hamster")des_pet(anim_type="hamster",pet_name="harry")#以上對代碼的調用都是可以的```
  • 返回值
  • 函數在執行了代碼序列之後,可以返回值,這個值可以是數字,字符,列表,元組,字典,能不能傳函數有待測驗,js可以
def get_num(a,b): return a+bnum=get_num(10,20)print(num)#-->30

我剛整理了一套2018最新的0基礎入門和進階教程,無私分享,加Python學習qun :227+435+450 即可獲取,內附:開發工具和安裝包


分享到:


相關文章: