1. 程式人生 > >Python在函數中使用*和**接收元組和列表

Python在函數中使用*和**接收元組和列表

eight argument ron err 由於 .net 表示 方法 class

當要使函數接收元組或字典形式的參數 的時候,有一種特殊的方法,它分別使用*和**前綴 。這種方法在函數需要獲取可變數量的參數 的時候特別有用。

[註意]
[1] 由於在args變量前有*前綴 ,所有多余的函數參數都會作為一個元組存儲在args中 。如果使用的是**前綴 ,多余的參數則會被認為是一個字典的健/值對
[2] 對於def func(*args):,*args表示把傳進來的位置參數存儲在tuple(元組)args裏面。例如,調用func(1, 2, 3)args就表示(1, 2, 3)這個元組
[3] 對於def func(**args):,**args表示把參數作為字典的健-值對存儲在dict(字典)args裏面。例如,調用func(a=‘I‘, b=‘am‘, c=‘wcdj‘)

args就表示{‘a‘:‘I‘, ‘b‘:‘am‘, ‘c‘:‘wcdj‘}這個字典
[4] 註意普通參數與*和**參數公用的情況,一般將*和**參數放在參數列表最後。

[元組的情形]

[Python] view plain copy print?
  1. #! /usr/bin/python
  2. # Filename: tuple_function.py
  3. # 2010-7-19 wcdj
  4. def powersum(power, *args):
  5. ‘‘‘‘‘Return the sum of each argument raised
  6. to specified power.‘‘‘
  7. total=0
  8. for i in args:
  9. total+=pow(i,power)
  10. return total
  11. print ‘powersum(2, 3, 4)==‘, powersum(2, 3, 4)
  12. print ‘powersum(2, 10)==‘, powersum(2, 10)
  13. ########
  14. # output
  15. ########
  16. powersum(2, 3, 4)==25
  17. powersum(2, 10)==100

[字典的情形]

[python]
view plain copy print?
  1. #! /usr/bin/python
  2. # Filename: dict_function.py
  3. # 2010-7-19 wcdj
  4. def findad(username, **args):
  5. ‘‘‘‘‘find address by dictionary‘‘‘
  6. print ‘Hello: ‘, username
  7. for name, address in args.items():
  8. print ‘Contact %s at %s‘ % (name, address)
  9. findad(‘wcdj‘, gerry=[email protected], /
  10. wcdj=[email protected], yj=[email protected]

在gvim中的輸出結果:
技術分享

http://blog.csdn.net/delphiwcdj/article/details/5746560

Python在函數中使用*和**接收元組和列表