語法框架
# 函數的定義階段:函數定義過程,只檢測語法,不執行裏面的代碼 def 函數名(等同於變量名)(): """對函數(工具)的描述信息""" 代碼塊(實現函數功能的代碼)
# 函數的使用階段 func() # 執行函數裏面的代碼
例如:函數
def func1(): '''打印hello,world!''' print('hello,world!') func1() # print(func1.__doc__) # 能夠打印出函數的功能
運行結果:工具
hello,world! # 打印hello,world! Process finished with exit code 0
參數:函數用來接收外部信息的媒介。同變量名。code
空函數it
定義一個函數,但不作任何事情,只是用來佔個位置,先實現其餘功能,將來進行補充,能夠用來搭建項目框架。class
def func1(): pass def func2(): pass def func3(): pass ……
有參函數變量
在函數定義階段,括號內有參數,這個函數就是有參函數。數據類型
定義時有參,調用時就必須得傳參。語法
def guess(x, y): """給定兩個數,打印較大的數""" if x > y: print(x) else: print(y) guess(50, 20)
運行結果:
50 Process finished with exit code 0
無參函數
在函數定義階段,括號內沒有參數,這個函數就是無參函數。
定義時無參,調用時就不用傳參。
def func(): '''打印hello,world!''' print('hello,world!') func()
運行結果:
hello,world! Process finished with exit code 0
返回值:返回一個值(函數的返回值能夠是任意數據類型)
def max_num(): """給定兩個數,打印較大的數""" x = 20 y = 30 if x > y: return x else: return y num = max_num() print('num:', num)
運行結果:
num: 30 Process finished with exit code 0
return的特性:
return 返回一個返回值,若是沒有返回值,返回None
def func(): return # 沒有返回值 print(func())
運行結果:
None Process finished with exit code 0
def func(): return 1 # 有返回值 print(func())
運行結果:
1 Process finished with exit code 0
沒有return 默認返回None
def func(): pass # 沒有return print(func())
運行結果:
None Process finished with exit code 0
return 會終止函數,不運行下面的代碼,假設有多個return的時候,運行到第一個就會結束,不會運行第二個
def max_num(): """給定兩個數,打印較大的數""" return 1 # 下面的代碼不會執行 x = 20 y = 30 if x > y: return x else: return y num = max_num() print('num:', num)
運行結果:
num: 1 Process finished with exit code 0
return 經過逗號隔開,能夠返回多個值,返回值以元組的形式接收
def func(): return 1,2,[3,4] # 多個return print(func()) print(type(func()))
運行結果:
(1, 2, [3, 4]) <class 'tuple'> Process finished with exit code 0
函數定義階段產物,具備描述意義,用來接收實參傳的值。
位置形參
調用函數時,從左到右依次接收實參的值
def fun1(x, y, z): # 位置形參:x,y,z print(x, y, z) fun1(1, 2, 3) # 調用函數階段,按照1,2,3的順序分別將值傳給x,y,z
運行結果:
1 2 3 Process finished with exit code 0
默認形參
def fun1(x, y, z=0): # 位置形參:x,y;默認形參 z = 0 print(x, y, z) fun1(1, 2, 3) # 調用函數階段,按照1,2,3的順序分別將值傳給x,y,z fun1(1, 2) # 調用函數階段,按照1,2 的順序分別將值傳給x,y;z使用默認值 0
運行結果:
1 2 3 1 2 0 Process finished with exit code 0
函數調用階段的產物,有具體的值,將值傳給形參。
位置實參
從左到右依次傳值給位置形參,和位置形參必須一一對應
def fun1(x, y, z): # 位置形參:x,y,z print(x, y, z) fun1(1, 2, 3) # 調用函數階段,按照1,2,3的順序分別將值傳給x,y,z
關鍵字實參
def fun1(x, y, z): # 位置形參:x,y,z print(x, y, z) fun1(3, z=2, y=1) # 調用函數階段,位置實參按照順序傳值給位置形參 ,關鍵字實參按照形參名傳值
運行結果:
3 1 2 Process finished with exit code 0