函數,function,是一段代碼的集合體。是Python爲了代碼最大程度的重用、減少代碼冗餘而提供的最基本的程序結構。
Python是一門面向對象的編程語言,對函數進行分類和封裝,由對象實現對方法的調用。python
在此以前,咱們已經接觸過一部分Python的Built-in內建函數,例如abs()、max()、min()、int()等。
要實現調用一個函數,必須先知道函數的名稱以及所須要的參數信息。對於內建函數,能夠經過命令help(func_name)查看函數的幫助信息。
經過函數名實現調用,其中的函數名其實就是指向一個函數的對象引用,能夠把函數名賦給任何一個變量,至關於給這個函數起了一個別名。
例如:編程
>>> a = abs # a 是函數abs()的別名 >>> a(-1) 1
定義關鍵字def。Python中將函數的聲明和定義視爲一體,函數由聲明的標題行和定義體組成。編程語言
def 函數名(參數列表): 函數體 return sth.
【注意】:函數
【例子一】自定義一個求絕對值的函數爲例:ui
>>> def my_abs(x): ... if x>= 0: ... return x ... else: ... return –x >>> my_abs(-3) 3
如何定義一個空函數?使用pass關鍵字。
pass語句用來做爲佔位符。
何時使用呢?通常是好比說這段代碼還沒想好怎麼寫,可使用pass讓代碼能運行起來。code
def nop(): pass
函數定義完成後,把函數寫入到***.py文件中保存。進入到該存放路徑下,啓動Python解釋器。
使用語句「from py_file_name import 函數名」。對象
import 語句能夠導入須要的Python模塊,例如 import time;
也能夠從模塊中導入某部分,from time import sleep,ctime;
也能夠導入某個自定義的模塊或者模塊中的函數等。io
有時候工程模塊存在層級目錄結構,而只須要導入工程中下的某文件的某部分,則可使用「.」進行導入,例如:
from 工程名層級.test_function import TestFuncast
調用函數時,須要對函數的參數列表進行檢查。
若是參數個數不對,python解釋器會自動檢查出來,並拋出TypeError。但若是參數類型不對,python解釋器就沒法幫助檢查。function
內置函數參數類型不對時:
>>> abs('a') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: bad operand type for abs(): 'str'
若函數定義沒有參數檢查,則出錯信息在下一句,與內置函數不同,說明函數定義不夠完善。
def my_abs(x): if x>= 0: return x else : return -x >>> my_abs('a') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\Python_project\test1.py", line 2, in my_abs if x>= 0: (if語句報的錯) TypeError: '>=' not supported between instances of 'str' and 'int'
改成以下:
def my_abs1(x): if not isinstance(x,(int , float )): # 參數類型檢查 raise TypeError('not the type') # 拋出錯誤並提示「not the type」 if x >=0: return x else: return -x >>> my_abs1('a') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "D:\Python_project\test1.py", line 11, in my_abs1 raise TypeError('not the type') TypeError: not the type # (錯誤和異常的處理)