近來,看了看Python這種強大的腳本語言,細細的試了試,感覺還是蠻好用的,怪不得大家都用來進行科學計算什麼的,雖然是C語言實現的,但是和C語言還是存在蠻多的差別的。
函數是各種語言中一般都會包含的,Python的函數聲明和定義是在一起的,其中和C++有一定的相似性就是支持默認參數等特性。
函數定義的基本形式如下:
- def MyFunc(args):
- 'this doc string'
- function_implement
基本的形式中包含函數名和參數,以及doc字符串,最後就是實現部分。
一般的語言都需要按照自己定義的順序賦值實現參數的傳遞,但是在Python中支持調用時的關鍵參數,所謂的關鍵參數就是在調用的時候,對參數名進行無序的賦值,這時候解釋器會自動完成參數的對應操作。
- def myFunc(args1,args2,args3)
- function_implement
本來調用的過程應該是myFunc('abc',10,'cdf'),采用關鍵參數的方式進行調用則可以按如下的形式進行:
myFunc(args2=10,args3='cdf',args1='abc')。
從上面的定義可知,調用的過程是一個無序的過程,這個無序就是通過關鍵參數的形式實現的。這時候解釋器會根據args1,args2,args3的值自動調整參數。
對於不定參量的函數實現過程中如何實現關鍵變量呢?
首先我們已知元組和字典的函數定義形式如下:
- 基於元組的形式:
- def myFunc(formal_args1,formal_args2,*tupleArgs)
- 基於字典的形式:
- def myFunc(formal_args1,formal_args2,**dictArgs)
這兩種方法都可以解決不定參量函數的問題。
比如myFunc(formal_args1,formal_args2,*tupleArgs),
當輸入的參數個數大於2個時,多於出來的參數就被當做元組的一部分,這樣也就實現了所有參數的傳遞過程
比如
myFunc(
formal_args1,
formal_args2,'args3',args4,args5),這時候參數
'args3',args4,args5就是元組參數的一部分。即'args3',args4,args5構成一個元組。
但是這種方式不能解決下面的形式:
myFunc(
formal_args1,
formal_args2,c='keyArgs'),這種函數是非常重要的一種,因為有時候程序需要參數的設置,我們可以將c='keyArgs'看成一對鍵值問題,c可以作為鍵,而'keyArgs'作為值,這時也就可以采用字典的形式實現了帶有關鍵字的不定參數函數問題。也就是定義def myFunc(formal_args1,formal_args2,**dictArgs),然後調用
myFunc(
formal_args1,
formal_args2,c='keyArgs')。