Python自學 08 函式基礎(上)

2021-08-10 07:54:30 字數 2363 閱讀 8578

就像中學所學的一樣,也可以稱之為「方法」,可以用來解決各種數學計算或者實現切合實際的功能,例如計算圓的面積 s=pi*r*r,只要知道半徑,什麼圓的面積都可以計算出來。

這就是一種抽象,再舉個栗子:

計算數列的和:1+2+3+…+100,可以抽象記成:

而電腦程式也是一樣,函式就是一種最基本的一種**抽象的方式。

在 python 中,定義乙個函式要使用 def 語句,依次寫出函式名、括號、括號中的引數和冒號:,然後,在縮排塊中編寫函式體,函式的返回值用 return 語句返回。舉例:

def my_abs(x):

if x >= 0: 

return x 

else:

return -x     

函式體內部的語句在執行到 return 時,函式就執行完畢並將結果返回,如果沒有 return語句也會返回,只不過返回結果是 none。 return none 可以簡寫為 return。

什麼都不做的函式,只是作為佔位符,讓**可以正常執行,以後有什麼功能可以新增進去。

def nop():

pass

而 pass 語句還可以放在其它語句裡面,也是佔位:

if age >= 18:

pass  

在寫完函式之後,我們可以進行呼叫。而 python 也內建了不少的函式,呼叫時需要知道函式的名稱和引數。內建函式自行官網,不熟的可以 help(【函式名】)。例如呼叫絕對值函式,最大值函式,型別轉換函式:

>>> abs(100)

100

>>> abs(-20)

20 >>> max(2, 3, 1, -5)

3 >>> int(『123』)

123

當輸入的函式引數數量不對,或者型別不對,python 將會爆出相應錯誤。

而函式名其實也是乙個指向函式物件的引用,完全可以把函式名賦給乙個變數,相當於起了個「別名」:

>>> a = abs # 變數 a 指向 abs 函式

>>> a(-1) # 所以也可以通過 a 呼叫 abs 函式

1 當函式的引數數量不對的時候, python 直譯器會自動檢查出來並丟擲 typeerror:   

>>> my_abs(1, 2)

traceback (most recent call last):

file 「」, line 1, in

typeerror: my_abs() takes 1 positional argument but 2 were given

但是引數的型別不對,直譯器就沒法進行檢查,除了早已編寫過型別異常檢查的內建函式。而自己編寫時,資料型別檢查可以用內建函式 isinstance() 實現

def my_abs(x):

if not isinstance(x, (int, float)):

raise typeerror(『bad operand type』)

if x >= 0:

return x

else:

return -x

輸入錯誤型別:

>>> my_abs(『a』)

traceback (most recent call last):

file 「」, line 1, in

file 「」, line 3, in my_abs

typeerror: bad operand type

python 的函式是可以返回多個值的,例如在遊戲中經常需要從乙個點移動到另乙個點,給出座標、位移和角度,就可以計算出新的座標:

import math

def move(x, y, step, angle=0):

nx = x + step * math.cos(angle)

ny = y - step * math.sin(angle)

return nx, ny

然後我們可以同時獲得返回值:

>>> x, y = move(100, 100, 60, math.pi / 6)

>>> print(x, y)

151.96152422706632 70.0

但這是假象,python 返回的還是乙個單一的值:

>>> r = move(100, 100, 60, math.pi / 6)

>>> print(r)

(151.96152422706632, 70.0)

沒錯,python 返回的是乙個 tuple,語法上返回的 tuple 可以省略括號,而多個變數可以同時接收乙個 tuple,按位置賦給對應的值。

演算法基礎(上)

演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制,簡單來說就是解決問題的步驟 演算法特徵 有窮性 確切性 輸入項 輸出項 可行性特徵 含義有窮性 演算法在執行有限個步驟之後終止 確切性演算法的每一步必須有確切的定義 輸入...

python 入門筆記 語法基礎 上

寫在前面 ide visual studio code 以下原始碼均可直接執行,python其實對於學過c 或c語言的人來說是比較好上手的,主要差別是python更注重格式縮排之類,其表達法甚至比c語言還靈活 目錄 字串方法 常見函式及其使用 格式化字串if語句練習elif語句練習列表和下標列表簡單...

WS BPEL語言基礎(上)

16.1.ws bpel語言基礎 在我們能夠設計編排層之前,我們需要很好地理解如何正式地表達流程的操作特徵。本書使用ws bpel語言來演示流程邏輯如何能夠被作為具體定義的一部分來描述 圖16.1 從而能夠通過相適應的編排引擎來實現和執行。圖16.1.常見的ws bpel流程定義結構 雖然你很可能會...