Python 基礎起步 十 什麼叫函式?

2021-09-12 23:55:20 字數 2513 閱讀 9811

函式是對程式邏輯進行結構化或者過程化的一種程式設計方法。是組織好的,可重複使用的,用來實現單一,或相關聯功能的**段。函式能提高應用的模組性,和**的重複利用率。
好啦,我知道這說的不是人話,其實簡單理解就是: 如果我們有一些**可以執行一些功能,比如有100行,我們可以把這些**打包叫做a,那麼a就是乙個函式,下次我們想要執行一樣的功能,不用重新寫100行,直接呼叫a就可以了。在接下來的介紹中讓我們看看實際例子

首先,python內建了很多有用的函式,我們可以直接呼叫。不需要建立。而要呼叫乙個函式,需要知道函式的名稱和引數,比如求絕對值的函式abs

abs(-500)

out:500

很簡單吧,只要直接呼叫函式名和函式需要的引數即可,再看一些其他的內建函式的例子:

type('hello')                # max(10,20,30,45)             # 45

len('hello world') # 11

abs(1, 5)

typeerror: abs() takes exactly one argument (2 given)

這裡很好理解,abs這個內建方法只接受1個引數,這裡傳遞了兩個所以就報錯了。

我們可以自己建立函式,建立乙個函式很簡單,利用關鍵字def就可以, 之後依次寫出函式名、括號、括號中的引數和冒號,最後在縮排塊中編寫函式體,函式的返回值用return語句返回。當然,如果不需要返回結果值,也可以不加return。我們以自定義乙個求絕對值的my_abs函式為例:

def my_abs(x):

if x >= 0:

return x

else:

return -x

這裡大家就可以發現,我們之前所學到的邏輯條件排上了用場,這裡我們根據絕對值的求法寫出了自己的函式,如果是正數返回函式本身,如果是負數,返回它的相反數。讓我們測試一下

my_abs(-200)   

out:200

這裡需要注意幾點:函式體內部的語句在執行時,一旦執行到return時,函式就執行完畢,並將結果返回。因此,函式內部通過條件判斷和迴圈可以實現非常複雜的邏輯。

定義函式的時候,我們把引數的名字和位置確定下來,函式的介面定義就完成了。對於函式的呼叫者來說,只需要知道如何傳遞正確的引數,以及函式將返回什麼樣的值就夠了,函式內部的複雜邏輯被封裝起來,呼叫者無需了解。

python的函式定義非常簡單,但靈活度卻非常大。除了正常定義的必選引數外,還可以使用預設引數、可變引數和關鍵字引數,使得函式定義出來的介面,不但能處理複雜的引數,還可以簡化呼叫者的**。

預設引數
我們仍以具體的例子來說明如何定義函式的預設引數。我們現在想寫乙個求平方的函式:

def power(x):

return x * x

測試一下是否正確

power(5)

out:25

現在,如果我們要計算 x3x3 怎麼辦?可以再定義乙個power3函式,但是如果要計算 x4x4 、 x5x5 ……怎麼辦?我們不可能定義無限多個函式。你也許想到了,可以把 power(x) 修改為 power(x, n),用來計算 xn:

def power(x, n):

s = 1

while n > 0:

n = n - 1

s = s * x

return s

對於這個修改後的 power 函式,可以計算任意 n 次方:

power(2, 3)

out:8

但是,舊的呼叫**失敗了,原因是我們增加了乙個引數,導致舊的**無法正常呼叫:

power(9)

typeerror: power() missing 1 required positional argument: 'n'

這個時候,預設引數就排上用場了。由於我們經常計算 x2x2 ,所以,完全可以把第二個引數 n 的預設值設定為 2:

def power(x, n=2):

s = 1

while n > 0:

n = n - 1

s = s * x

return s

這樣,當我們呼叫 power(5) 時,相當於呼叫 power(5, 2):

power(5)

out:25

而對於 n > 2 的其他情況,就必須明確地傳入 n,比如 power(5, 3)。從上面的例子可以看出,預設引數可以簡化函式的呼叫。設定預設引數時,有幾點要注意:

好啦,今天先為大家講到這裡,有很多複雜的方法還要大家自己去探索,

Python 基礎 (起步一)

基礎 僅僅列印 hello world 是不夠的,是不是?你需要做的更多,比如,你要接收一些輸入,操縱它們,並且從中得到一些什麼。我們可以通過python的常量和變數來達成這些目標,這一節我們還將學習一些其他概念。注釋 注釋是寫在 符號右邊的文字,主要用於作出注釋,以方便讀者理解程式。僅限一行,如果...

什麼叫超融合基礎架構?

雲計算三大類別 私有雲 公有雲 混合雲 三個層次 iaas paas saas 超融合屬於私有雲中的iaas服務層。一般在企業初次上雲,除了會選擇簡便 高價效比私有雲方案,更熱門的就是超融合了。那麼到底什麼是超融合呢?虛擬化是1.0,超融合是1.5,雲計算是2.0。或者說hci是種一體化的私有雲形態...

什麼叫python爬蟲 Python 爬蟲是什麼

python爬蟲即使用python程式開發的網路爬蟲 網頁蜘蛛,網路機械人 是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。通俗的講就是通過程式去獲取web頁面上自己想要的資料,也就是自動抓取資料。python 爬蟲即使用 python 程式開發的網路爬蟲 網頁蜘蛛,網路機械人 是一...