1. 程式人生 > >python中函式與函數語言程式設計(一)

python中函式與函數語言程式設計(一)

在學習之前,我們先去區分面對物件、面對過程、函數語言程式設計他們之間的區別,從改圖可以看出,他們之間不是完全相同的,也不是沒有任何相同點的
在這裡插入圖片描述

1.函式和過程的基本認識

def func1():
    """testing1"""
    print('in the func1')
    return 0       # 這是一個函式

def func2():
    """testing2"""
    print('in the func2')    # 這是一個過程

x = func1()
y = func2()

# 說白了,過程就是沒有返回值的函式而已

print('from func1 return is %s' %x)  # 注意這邊的萬用字元的是使用方法
print('from func1 return is %s' %y)

在這裡插入圖片描述
ps:此處一定要多看註釋,注意區分好函式與過程之間的關係:過程沒有返回值,函式有返回值,所以說白了,過程就是沒有返回值的函式而已

2.函式的特性

(1)減少重複程式碼
(2)使程式變的可擴充套件
(3)使程式變得易維護

# 函式   有一段可以複用的程式,一定要定義成函式,簡潔
def logger():
    with open('a.txt','a+') as f: # 開啟檔案,以二進位制追加的方式,沒有的話就建立
        f.write('end action\n')   # 寫入一些內容


# 下面三個都是過程
def test1():
    print('test1 starting action...')

    logger()  # 呼叫logger()函式

def test2():
    print('test2 starting action...')

    logger()   # 呼叫logger()函式

def test3():
    print('test3 starting action...')

    logger()   # 呼叫logger()函式

3.匯入time模組

第三部分主要是匯入了time模組,其餘和2一樣。

import time
def logger():
    time_format = '%y-%m-%d %x'
    time_current = time.strftime(time_format)
    with open('a.txt','a+') as f:
        f.write('%s end action\n' %time_current)


# 下面三個都是過程
def test1():
    print('test1 starting action...')

    logger()  # 呼叫logger()函式

def test2():
    print('test2 starting action...')

    logger()   # 呼叫logger()函式

def test3():
    print('test3 starting action...')

    logger()  # 呼叫logger()函式

匯入了時間模組,注意時間模組的使用方法,並在結果中顯示出來時間
在這裡插入圖片描述

函數語言程式設計簡單介紹(與python關係不大)

概念:函式是Python內建支援的一種封裝,我們通過把大段程式碼拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。

Python對函數語言程式設計提供部分支援。由於Python允許使用變數,因此,Python不是純函數語言程式設計語言。

舉例來說:

  (1 + 2) * 3 - 4

傳統的程序式程式設計,可能這樣寫:

  var a = 1 + 2;

  var b = a * 3;

  var c = b - 4;

函數語言程式設計要求使用函式,我們可以把運算過程定義為不同的函式,然後寫成下面這樣:

  var result = subtract(multiply(add(1,2), 3), 4);

這段程式碼再演進以下,可以變成這樣:

add(1,2).multiply(3).subtract(4)

這基本就是自然語言的表達了。再看下面的程式碼,大家應該一眼就能明白它的意思吧:

merge([1,2],[3,4]).sort().search("2")

因此,函數語言程式設計的程式碼更容易理解。

要想學好函數語言程式設計,不要玩py,玩Erlang,Haskell, 好了,我只會這麼多了。。。