函式的定義方式:
def 函式名():
**塊
函式的呼叫方式:
函式名()
上面是最簡單的無引數函式。函式高階,就是帶有引數的函式,樣例如下:
def
demo
(x,y)
:return x+y
#呼叫方式
print
(demo(1,
2))# 輸出3
demo函式做只做了兩個引數的加法運算。
python的引數如下幾種:
1.必須引數:
def
demo1
(x):
#此函式的x就是必須引數,即沒有就報錯
return x
2.預設引數:
def
demo2
(x,y=1)
:return x*y
如上所示 y就是預設引數也叫預設引數,當demo2只輸入乙個引數時函式也不會報錯,相應的此引數給值給x,如果不傳入第二個引數那麼y的值是預設1 。
此外預設引數還有個特別的地方,就是當傳入引數時可以 用「引數名=值」的方式,例子如下:
def
demo3
(x,y=
1,z=2)
:return x+y+z
print
(demo3(
1,y=
2,z=4)
)#或者
print
(demo(
1,z=
2,y=2)
)
使用「引數名=值」的方式時預設引數的先後順序是可以改變的。而且要指出的注意點是帶有預設值的引數一定要位於引數列表的最後面。
3.不定長引數
不定長引數是乙個很神奇的引數,能處理比當初宣告時更多的引數。
def
demo3
(x,*args,
**kwargs)
當輸入的非關鍵字引數超過1個那麼餘下的引數會全部存入args元組中,通過下標可以依次操作。上面這個樣例是很靈活的,如果輸入了關鍵字引數那麼變數都會以字典形式存入名為kwargs的字典中。要對關鍵字進行操作即對kwargs進行字典操作。
注意事項:如果以上多種引數全部存在於乙個函式中,必須要注意引數的先後順序,必要引數在最前面,其次是可變引數*args ,再是預設引數,千萬注意可變引數**kwargs在最後面,這是他們的先後次序。如下所示:
def
demo4
(a,*args, b=
1, c=33,
**kwargs)
:
Python中的函式引數問題
python 中函式引數的傳遞方式分為 1 位置引數 這個說白一點就是普通的引數傳遞,比如定義乙個求和函式 def fun1 a,b return a b 其中的引數a和 b即為位置引數 2 預設引數 有時候需要給引數設定乙個預設值,比如定義乙個求次方的函式 def fun2 x,n 2 retur...
python函式的可變引數問題
deff x print x,type x f 1 f a b f 1 2,3 23,31 如上程式,定義了乙個函式,裡面的引數加 代表可變引數,也就是可以輸入多個引數,但是,輸入進去後引數的型別就發生了變化。如下為程式執行結果 1,class tuple a b class tuple 1 2,3...
python函式引數改變問題
前幾天在做專案的過程中發現了乙個問題,向函式中傳入乙個list,在函式體內將其賦值給list,對list1操作後發現list也發生了變化,啊 出乎意料。查了一下原因,原來python裡有可變物件和不可變物件之分。只有傳入的是不可變物件時,值才不發生改變,若是可變物件,充當函式引數時要注意了。不可變物...