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...