官术网_书友最值得收藏!

4.3 函數

在實際編程中,會有一段程序經常用到的情況,如果每次都重新寫這段程序會很浪費時間,可以把這部分程序事先存儲起來,以后需要時直接調用即可。函數就實現了這樣的功能,它是一段組織好的、用來實現某些功能的代碼段,可重復使用。函數能提高應用的模塊性和代碼的重復利用率。

函數一般包括系統內置的函數和自定義函數。

Python的內置函數有很多,如前面用到的print函數,常見的內置函數根據功能的不同,大致可分為數學運算類、字符串處理類、類型轉換類、序列處理類等,本書重點在于機器學習和數據處理,對內置函數就不再詳細陳述,讀者可以查找聯機文檔了解Python的內置函數。下面介紹Python的自定義函數的使用方法。

自定義函數的基本語法格式如下。

def 函數名(參數列表):
      函數體
      return [表達式]

說明:

函數代碼塊以def關鍵詞開頭,后接函數標識符名稱和小括號(()),后面再跟一個冒號(:)。

小括號用于定義參數,可以不包含參數,如果包含多個參數,參數之間以逗號分隔。函數內容縮進。

return [表達式]表示函數返回,選擇性地返回一個值給調用方。不帶表達式的return相當于返回None,省略return也相當于返回None。

下面來看幾個實例。

【實例4-7】建立一個自定義函數,將要打印的內容傳遞給函數,在函數體內打印傳遞來的內容。

函數定義如下:

def myprint(str):
      print(str)

上面的函數代碼體中只有一條語句,函數名稱為“myprint”,輸入參數命名為“str”,用于接收外部傳來的內容,函數體中使用打印函數來打印外部傳送來的字符。

函數的調用:函數調用的方法就是直接寫出自定義的函數名就可以,如果有參數,直接提供參數,另外這個實例最后沒有return語句,就是不需要返回任何值。

函數定義及調用如下圖所示。

【實例4-8】定義一個函數,輸入長和寬,在函數中計算矩形的面積。

def area(height, width):
      return height*width

上面的函數使用return把計算結果返回,調用這個函數時需要提供長和寬。程序運行結果如下圖所示。

【實例4-9】建立一個數字比較函數,并比較輸入數字。

分析:這個自定義函數用于實現數字比較,因此應有兩個輸入參數,在函數體中,使用條件語句判斷兩個參數的大小,并輸出結果,程序代碼如下。

def compare(num1, num2):
      if num1 > num2:
        print("%s大于%s" % (num1, num2))
      elif num2 > num1:
        print("%s大于%s" % (num2, num1))
      else:
        print("%s等于%s" % (num1, num2))

這個函數相較前面幾個函數來說更為復雜,其中使用條件語句,根據輸入的兩個參數判斷大小并顯示結果。

這個函數的調用和其他函數的調用一樣,使用函數名,并提供參數。例如:

compare(3,5)
    compare(6,5)

程序運行結果如下圖所示。

當然,自定義函數在使用時,還涉及許多細節,如全局變量和局部變量。函數調用時參數也有多種情況,這些本書不再詳細闡述。

主站蜘蛛池模板: 五指山市| 巴塘县| 沾益县| 洛扎县| 湖州市| 师宗县| 花莲市| 清原| 丹棱县| 杭锦后旗| 上饶县| 三明市| 阜康市| 南靖县| 昌吉市| 阿坝县| 瑞金市| 临西县| 叙永县| 镇康县| 新闻| 三亚市| 乌拉特后旗| 卫辉市| 安宁市| 方山县| 黎城县| 武乡县| 额尔古纳市| 石林| 手游| 阳山县| 延津县| 漳州市| 新余市| 广河县| 葵青区| 赫章县| 荆门市| 临沧市| 大理市|