def function_name( * arguments, * * keywords): pass return something |
*arguments 就是參數識別字 (identifier) 前面加上一個星號,與 **keywords 參數識別字前面加上兩個星號,這是兩種不同的不定參數設定模式。前者 *arguments 會把多的參數當成一組序對 (tuple) ,後者 **keywords 則是會把多的參數當成一組字典 (dictionary) ,因此需額外提供參數名稱當 key 。
*arguments 與 **keywords 可以同時使用,但是任一函數只能有一個 *arguments 或 **keywords 。以下程式示範 *arguments
1 2 3 4 5 6 7 8 9 10 11 12 13 | def hello(age, * name): for n in name: print ( "Hello," , n, "!" ) print ( "You are" , age, "years old." ) hello( 13 , "John" , "Mary" , "9527" ) # 《程式語言教學誌》的範例程式 # 檔名:def14.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

以下程式示範 **keywords
1 2 3 4 5 6 7 8 9 10 11 12 | def hello( * * name): for n in name: print ( "Hello" , n, ", you're" , name[n]) hello(one = "John" , two = "Mary" , three = "9527" ) # 《程式語言教學誌》的範例程式 # 檔名:def15.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

以下程式同時使用 *arguments 與 **keywords
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def hello( * name, * * age): for n in name: print ( "Hello," , n, "!" ) for n in age: print ( "You are" , age[n], "years old." ) hello( "John" , "Mary" , "9527" , one = 13 , two = 25 , three = 33 ) # 《程式語言教學誌》的範例程式 # 檔名:def16.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2010 年 12 月 |
執行結果如下

中英文術語對照 | |
---|---|
函數 | function |
參數 | parameter |
參數列 | paramenter list |
識別字 | identifier |
序對 | tuple |
字典 | dictionary |
參考資料
http://docs.python.org/py3k/tutorial/controlflow.html
http://docs.python.org/py3k/reference/compound_stmts.html
http://docs.python.org/py3k/tutorial/controlflow.html
http://docs.python.org/py3k/reference/compound_stmts.html
沒有留言:
張貼留言