本文參考:廖雪峰的官方**:
def
function:return
pass
函式可以同時返回多個值,但其實就是乙個tuple。
位置引數
def power(x, n)
預設引數
def power(x, n=2)
預設引數必須指向不變物件str
,none
,tuple
可變引數
def calc(*numbers)
在函式內部,引數numbers接收到的是乙個tuple
如果已經有乙個list或者tuple,要呼叫乙個可變引數:
>>
> nums =[1
,2,3
]>>
> calc(
*nums)
14
*nums
表示把nums
這個list的所有元素作為可變引數傳進去
這裡的*
並非c中的指標?
關鍵字引數
def person(name, age, **kw)
>>
> extra =
>>
> person(
'jack',24
,**extra)
name: jack age:
24 other:
**extra
表示把extra
這個dict的所有key-value用關鍵字引數傳入到函式的**kw
引數
命名關鍵字引數
def person(name, age, *, city, job)
和關鍵字引數**kw
不同,命名關鍵字引數需要乙個特殊分隔符*
,*
後面的引數被視為命名關鍵字引數
>>
> person(
'jack',24
, city=
'beijing'
, job=
'engineer'
)jack 24 beijing engineer
如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了:
def person(name, age, *args, city, job)
使用命名關鍵字引數時,如果沒有可變引數,就必須加乙個*
作為特殊分隔符。如果缺少*
,python直譯器將無法識別位置引數和命名關鍵字引數
def
person
(name, age, city, job)
:# 缺少 *,city和job被視為位置引數
pass
引數組合
引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。
def
f1(a, b, c=0,
*args,
**kw)
:print
('a ='
, a,
'b ='
, b,
'c ='
, c,
'args ='
, args,
'kw ='
, kw)
deff2
(a, b, c=0,
*, d,
**kw)
:print
('a ='
, a,
'b ='
, b,
'c ='
, c,
'd ='
, d,
'kw ='
, kw)
>>
> f1(1,
2)a =1 b =
2 c =
0 args =
() kw =
>>
> f1(1,
2, c=3)
a =1 b =
2 c =
3 args =
() kw =
>>
> f1(1,
2,3,
'a',
'b')
a =1 b =
2 c =
3 args =
('a'
,'b'
) kw =
>>
> f1(1,
2,3,
'a',
'b', x=99)
a =1 b =
2 c =
3 args =
('a'
,'b'
) kw =
>>
> f2(1,
2, d=
99, ext=
none
)a =
1 b =
2 c =
0 d =
99 kw =
>>
> args =(1
,2,3
,4)>>
> kw =
>>
> f1(
*args,
**kw)
a =1 b =
2 c =
3 args =(4
,) kw =
>>
> args =(1
,2,3
)>>
> kw =
>>
> f2(
*args,
**kw)
a =1 b =
2 c =
3 d =
88 kw =
重拾ICTCLAS,繼續學習
從去年3月份開始,經過一段時間的認真研究學習ictclas,把學習的心得發表在我的blog上,引起我很多愛好者的關注,也不斷有朋友和我聯絡,希望共同 自從去年七月份之後,一方面工作忙的原因,二方面自己也有很多的雜事,漸漸把此事拋諸了腦後,時間一長更是不想再深入,心浮氣躁也深入不進去。常常想起此事會有...
重拾CSS 學習之旅
1 什麼是css css叫做層疊樣式表,它定義了如何顯示html元素。樣式通常儲存在樣式表中,引用css外部式是為了解決表現與資料分離的問題,外部樣式也可以極大的提高工作效率。儲存在css檔案中,多個央視定義可層疊為乙個 2 語法 css例項主要由兩部分組成,選擇器以及一條或多條宣告 h1h1部分屬...
重拾C語言之指標篇(二)
指標與函式引數傳遞 c語言在傳遞引數時,會預設為形參分配新的記憶體空間,形參只有在被呼叫時才分配記憶體 單元,在呼叫結束時,即刻釋放所分配的記憶體單元。void main void change int i 我們可以看到,呼叫change 方法後並沒有改變i的值,我們可以把main方法和change...