Python3 5 函式與函式式程式設計

2021-08-07 16:48:40 字數 2801 閱讀 7346

1、關於函式

函式是指將一組語句的集合通過乙個名字(函式名)封裝起來,要想執行這個函式,只需呼叫其函式名即可。

(1)函式程式設計方法有3種,它是一種程式設計的規範,分別有面向過程、物件導向和函式式程式設計。

(2)3種程式設計方法各自特點:

面向過程:過程===》關鍵字:def

物件導向:類===》關鍵字:class

函式式程式設計:函式===》關鍵字:def

2、程式語言中函式定義:函式是邏輯結構化和過程化的一種程式設計方式。

(1)python中定義函式方法:

def test(x):          #def定義函式的關鍵字;test:函式名;()裡面可以定義形參

"the function definition" #""裡面是文件描述,這個不是必須有,但強烈建議為函式新增描述資訊

x+=1 #泛指**塊部分或程式處理邏輯

return x #return定義返回值

注:

函式式程式設計:就是先定義乙個數學函式,按照數學模型用程式語言去實現它

(2)python中定義過程的方法:

#函式定義:

def test1():

"testing 1"

print("the testing 1")

return 0

#過程定義:

def test2():

"testing 2"

print("the testing 2")

#函式呼叫

x=test1()

y=test2()

#函式與過程的返回值

print("from the test1 is %s" %x) #函式式程式設計呼叫的函式中,x接收的返回值為0

print("from the test2 is %s" %y) #面向過程呼叫的函式中,y接收的返回值為none

#執行結果:

#the testing 1

#the testing 2

#from the test1 is 0

#from the test2 is none

3、函式式程式設計與面向過程的區別:

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

面向過程程式設計:是由乙個個小的def定義的小的過程拼接在一起得到的。

過程是沒有返回值的函式,在python中隱式的給過程定義返回值為none

(2)函式式程式設計:函式式程式設計中的函式這個術語不是指計算機中的函式(實際上是subroutine),而是指數學中的函式,即自變數的對映。也就是說乙個函式的值僅決定於函式引數的值,不依賴其他狀態。比如sqrt(x)函式計算x的平方根,只要x不變,不論什麼時候呼叫,呼叫幾次,值都是不變的。

"函式式程式設計"是一種"程式設計正規化"(programming paradigm),也就是如何編寫程式的方**。主要思想是把運算過程盡量寫成一系列巢狀的函式呼叫。

注: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)

總結:這基本就是自然語言的表達了,因此,函式式程式設計的**更容易理解。要想學好函式式程式設計,學erlang,haskell語言。

4、使用函式的優點:

(1)**重複利用

(2)可擴充套件性

(3)保持一致性

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author:zhengzhengliu

import time

def blog():

"實現寫日誌的功能"

time_format = "%y-%m-%d-%x"

current_time = time.strftime(time_format) #以定義的格式列印時間

with open("test.txt",'a+',encoding="utf-8") as f:

f.write("%s end action\n" %current_time)

def test1():

print("testing 1")

blog()

def test2():

print("testing 2")

blog()

def test3():

print("testing 3")

blog()

#函式呼叫

test1()

test2()

test3()

執行結果:

python3 5 函式與函式式程式設計

1 物件導向,類 class 2 面向過程,過程 def 3 函式式程式設計,函式 def def func1 print in the func1 return 0 傳遞不定量的引數時,形參使用 的形式,引數會作為乙個元組進入 def test a 元組,接受n個位置引數,轉換成元組的形式 pri...

Python3 5 函式式程式設計之引數詳解

1 函式返回值 1 return命令執行效果 結束當前函式執行,後邊再寫別的內容也不會執行。返回值的接收直接賦值給乙個變數,即 變數接收函式體中return定義返回值結果。usr bin env python coding utf 8 author zhengzhengliu def test1 p...

python3 5 包含檔案,引用函式

執行檔案所在目錄下,宣告乙個 init py檔案,即使這個檔案是空。引用統一目錄下的py檔案下函式 import sys work spider code getitg fun import down import itg fun 如果是同乙個目錄,就直接引用,只包含這句,就用 itg fun.th...