:dagger:python
什麼是函數:函數
函數的做用,爲何要用函數:code
函數的使用:作用域
函數只有調用纔會被執行,例以下面的程序it
def hello(): ##定義hello函數 print('hello1') ##函數內容 print('hello2') print('hello3') hello() ##調用函數 hello1` `hello2` `hello3
有參函數,無參函數,空函數class
#有參函數: def func(test): print(123) #無參函數: def func(): print(123) #空函數: def func(): pass
返回值:函數運行的結果,還須要進一步操做時,給一個返回值 return用來返回函數執行結果,若是沒有返回值,默認爲Nonetest
python能夠間接返回多個值(返回了一個元組),一旦遇到return,函數執行結束,後面的代碼不會執行。效率
形參
(能夠任意起名)函數調用階段傳入的參數是實參
變量
def welcome(a): ##這裏的a是形參 print('hello',a) welcome('luck') ##這裏的luck是實參
參數能夠分爲實參和行參,而行參又能夠分爲四類,位置參數、默認參數、可變參數和關鍵字參數。
數據類型
def info(name,age): print(name,age) Info('leiting',20) ##按照位置的寫法 Info(age=20,name='letin') ##若是不按照位置的話,就是要這樣
設置默認參數時注意事項:必選參數在前,默認參數在後
在定義函數階段就已經傳入參數
若是說你在實參的時候傳入了一個新的參數,就會使用新參數默認參數在傳值的時候
不要將可變類型當作參數傳遞
應用場景:
def pow(x,y=2): print(x ** y) pow(4,3) ##此時就將y的值改爲了3
匹配完定義好的參數,**剩餘的參數以元組的形式存儲在 *args**(*args 名稱你能夠自行定義)
def hello(*args): pass
*wargs
(可變參數) 和 **kwargs
(關鍵字參數)
def hello(**kwargs): pass
聲明只能在默認參數以前,最好老老實實呆在對應的位置
def pow(x,y=2): return x ** y,x +y
放到實參中就是打散
在函數的定義時,位置參數,*****關鍵字參數-–-–>聚合。
在函數的調用(執行)時,位置參數,*****關鍵字參數-–-–>打散
通常在函數體外定義的變量成爲全局變量
,在函數內部定義的變量稱爲局部變量
。
全局變量全部做用域均可用,局部變量只能在本函數可用,變量的使用順序是,局部變量 > 全局變量, 也就是說:優先使用局部變量
那麼問題來了, 若是想在函數內使用全局變量,或改變全局變量的值, 應該怎麼作呢?
global: Python中定義函數時,若想在函數內部對函數外的變量進行操做,就須要在函數內部聲明其爲global(聲明以後爲全局變量)。