1. 程式人生 > >python 函式多引數

python 函式多引數

如果用過C語言中的printf()函式,那麼就會對引數傳遞個數可變的意義比較瞭解了。儘管可選引數的機制令函式的引數個數是可變的,但還是有限制的,引數個數有最大的限制,而且還要指明哪些是可選引數。而下面這個機制,可以接受熱議多個引數。

[python] view plaincopyprint?
  1. >>> def MyPrintf(format,*arg):
  2. format % arg
  3. >>> MyPrintf("%d is greater than %d",1,2)
>>> def MyPrintf(format,*arg): format % arg >>> 
MyPrintf("%d is greater than %d",1,2)
其中*arg必須是最後一個引數,*表示接受任意多個引數,除了前面的引數後,多餘的引數都作為一個tuple傳遞給函式,可以通過arg來訪問。

還有一種方式來實現任意多個引數的傳遞,就是引數按照dictionary的方式傳遞這個函式,函式同樣可以接受任意多個引數。

[python] view plaincopyprint?
  1. >>> def MyPrint(format,**keyword):
  2. for k in keyword.keys():
  3. "keyword[%s] is %s" % (k,keyword[k])
  4. >>> MyPrint(
    "ok",One=1,Two=2,Three=3)
>>> def MyPrint(format,**keyword): for k in keyword.keys():  "keyword[%s] is %s" % (k,keyword[k])  >>> MyPrint("ok",One=1,Two=2,Three=3)
同上一種機制,只不過是使用**表示接受任意個數的有名字的引數傳遞,但是呼叫函式時,要指明引數的名字,One=1,Two=2,Three=3,在函式中,可以使用dictionary的方式來操作keyword,其中keys是["One","Two","Three"],value = [1,2,3].還可將兩種機制和在一起。這時*arg要放在**keyword前面

函式接收引數的順序,先接收固定引數,然後是可選引數,然後是任意引數,最後是帶名字的任意引數。