《笨辦法學 python3》系列練習計劃——18.命名、變量、代碼、函數

題目

從標題看,終於有點變成的感覺了不是麼?接下來 Zed 將要教我們從最簡單的方法來使用函數。

新知識

函數是一段可以重複運行的代碼片段,使用函數可以提高一段代碼的重複重複利用性,減少代碼量,並且提高效率。
python 中定義函數有特定個格式,總是以 def 開頭,後跟一個空格後是函數的名字,緊跟名字的是一對括號和冒號,如果這個函數有參數的話需要寫在括號內,多個函數用逗號隔開。然後,在另起一行,和 def 起始位置相距 4 個空格 (縮進 4 個空格)的地方開始寫函數的功能,取消 4 個空格則表示函數定義結束。

例如一個把任意數字加一後打印的函數看起來可能像這樣:

# 定義函數
def plus_one(number):
    new_number = number + 1
    print(new_number)

# 使用函數
plus_one(5)

# 結果將是
6

Zed 在《笨2》中寫到:

函數可以做三樣事情:

  1. 它們給代碼片段命名,就像“變量”給字符串和數字明明一樣。
  2. 它們可以接受參數,就跟你的腳本接受 argv 一樣。
  3. 通過使用 #1 和 #2,它們可以讓你創建“微型腳本”或者“小命令”(好吧,這句話我琢磨了半天,終於想通了“通過使用第一條和第二條它們可以讓你創建‘微型腳本’或者‘小命令’”)

加分練習

爲自己寫一個【函數注意事項】以供後續參考。注意事項如下:

  1. 函數定義是以 def 開始的麼?
  2. 函數名是以字符和下劃線 _ 組成的麼?
  3. 函數名是不是緊跟着括號 (?
  4. 括號裏是否包含參數?多個參數是否以逗號 ,隔開?
  5. 參數名是否有重複?(不能使用重複參數名)
  6. 緊跟着參數名的是不是括號和冒號 ):
  7. 緊跟着函數定義的代碼是否使用了 4 個空格的縮進?
  8. 函數結束的位置是否取消了縮進?

當運行一個函數時,記得檢查下面幾點:

  1. 調用函數時是否使用了函數名?
  2. 函數名是否緊跟着 (
  3. 括號有無參數?多個參數是否以逗號隔開?
  4. 函數是否以 ) 結尾?

按照這兩個表檢查你的練習,直到你不需要檢查爲止。最後,將下面幾句話閱讀幾遍:
“‘運行函數(run)’、‘調用函數(call)’、和‘使用函數(use)’是同一個意思”




我的答案

18.0 基礎練習

# 這就和我們的腳本使用 argv 一樣
def print_two(*args):
    arg1, arg2 = args
    print("arg1: %r, arg2: %r" %(arg1, arg2))

# 實際上參數 *args 是沒什麼意義的,我們實際可以這樣寫
def print_two_again(arg1, arg2):
    print("arg1: %r, arg2: %r" % (arg1, arg2))

# 這個是一個參數的
def print_one(arg1):
    print("arg1: %r" % arg1)

# 這個是沒有參數的
def print_none():
    print("I got nothin'.")

# 下面是調用函數的演示,
# 不去使用函數的話,它們是不會打印任何東西出來的。
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()

這裏寫圖片描述

跑一下沒出錯,接下來是程序肢解節目時間

Zed 以 print_two 爲例子拆解了代碼:

  1. 首先我們告訴 python 創建一個函數,我們使用的命令是 def,也就是“定義(define)”的意思。
  2. 緊接着 def 的是函數名。本例中的名字是print_two ,但名字可以隨意取,即便是“peanuts”也沒關係。但是最好能夠體現函數的功能。
  3. 然後我們告訴函數我們需要 *args(asterisk args),這和腳本的 argv 非常相似,參數必須放在圓括號 () 中才能正常工作。
  4. 接着用冒號 : 結束本行,然後開始下一行縮進。
  5. 冒號以下,使用 4 個空格縮進的行都是屬於 print_two 這個函數的內容。第一行的作用是將參數解包,這和腳本參數解包的原理差不多。
  6. 爲了演示它的原理,我們把解包後的每個參數都打印出來,這和我們在之前腳本練習中所作的類似。

函數 print_two 的問題是:解包在這裏其實是沒必要的,有更直接簡單的方式——在括號裏直接把變量寫出來。這就是 print_two_again

加分練習

本題的加分練習有點特殊,它本身就是答案,已經比較全面了




返回目錄

《笨辦法學 python3》系列練習計劃——目錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章