iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 19
0
自我挑戰組

Kaggle的解題挑戰 2018版系列 第 19

[Day19] Kaggle的解題挑戰 2018版 - Python function(函數)

進行到第19天了,看來寫Kaggle之前的前置點數也是蠻花時間的,不過程式語言這種東西,要學的也大概就是那些,今天還是來繼續打底,講一下函數,就是function,在Python中,一般人可能會覺得有啥好講的,但是Python的函數實在是太強大和方便了,也有點小複雜,因為他不止是單純的放值進去,他還有一些很聰明和方便的特色來使用。

個人覺得一個function最有代表性的example就是Fibonacci的範例了,來簡單寫一下。

def fib(n):
    """ A Fibonacci function example """
    a, b = 0, 1
    while a < n:
        print(a, end = ' ')
        a, b = b, a + b
    print()
fib(30)

一開始的"""區塊是function的docucment註解,算是Python document文件生成時,會使用這個區塊的文字來當作function的說明,然後function的說明的部分,會使用def這個關鍵字,再加上function名和其會用到的變數。

再來講一下一些Python function支援的特性,第一個是default argument value,可以給你的function變數設預設值,第二個是key word argumrnet,主要是可以讓你在呼叫function時,可以指定輸入特定的值就好了,而不用依賴其定義的順序簡單帶個例子。

另外下面是錯誤的使用情況。

再提一下使用*代表一個不定長度的tuple參數,用**來代表dic參數(一個dictionary的變數,之後再介紹容器會解說),在使用上來說,在定義了tuple參數之後,就只能再定義dic參數,或是key word參數,不能再使用根據順序mapping的方式了,不過,個人覺得這裏算是比較進階的使用和議題,如果各位有想深入Python再進行學習就好了,我在參考資料上,會附上這些function的參考資料。

在參考資料裏也有提到unpack argument list和lamda的使用,這二個也是很方便的操作,尤其是lamda,在流行一陣子的Functional Programming中,Python可以使用lamda的語法來實現。雖然很重要,不過,目前還是學到這裏就好了,之後有機會用到,再進行補充說明了。See you tommorrow~

參考資料:
4.7. More on Defining Functions


上一篇
[Day18] Kaggle的解題挑戰 2018版 - Python 條件運算子
下一篇
[Day20] Kaggle的解題挑戰 2018版 - Python Class
系列文
Kaggle的解題挑戰 2018版31

尚未有邦友留言

立即登入留言