python帝國cms Python 函式

2021-10-11 12:26:38 字數 2634 閱讀 1207

函式,是程式設計中很重要的乙個概念。簡單來說,函式是一段可重複使用的**段,給這段**起個名字就是「函式名」。在程式的任何地方都可以通過函式名來使用這段**,這就是「函式呼叫」。

函式的定義

函式的概念,其實我們在初中數學中就接觸過了。比如,這個表示式y = 2x + 3,我們就稱y是x的一次函式。寫成python函式就是這樣的:

def y(x):

return 2 * x + 3

如上例所示,python中定義乙個函式的規則是這樣的:

首先是通過關鍵字def來確定它是乙個函式,後面跟著函式名(比如上面的y),函式名後面是小括號括起來的引數,括號外面以冒號:結尾這一行。這一行就是函式的宣告。

接下來是函式體的**片段,可以是一行也可以是多行,但它們比def多了乙個縮排。函式體最後一行可以通過關鍵字return返回乙個或多個值。如果沒有寫return,python預設為返回none。

有一種特殊的函式定義:空函式,就是什麼都不做的函式,它通過乙個pass語句來定義函式體:

def do_nothing():

pass

空函式主要是在我們寫程式最開始,想好都有哪些函式要寫,先定義成空函式再慢慢實現它們具體的功能。

同樣的,後面我們學習python物件導向程式設計時類(class)的定義也可以用pass來實現乙個最小類:

class theemptyclass:

pass

函式的呼叫

定義好乙個函式後,我們就可以呼叫(執行)該函式了。呼叫函式就是通過函式名再傳入它需要的引數即可。

a = y(2)

print('a is ', a)

b = y(6)

print('b is ', b)

結合函式y的定義,猜猜看a和b的值分別為多少吧。

函式y是乙個數**算的函式,它的引數應該是整數或浮點數。如果我們給它傳乙個字串進去,看看會有什麼結果呢?

in [153]: y('a') -----------------

typeerror traceback (most recent call last)

in ----> 1 y('a')

in y(x)

1 def y(x):

----> 2 return 2 * x + 3

typeerror: must be str, not int

根據函式體的語句,我們先把字串'a'乘以2得到'aa',再計算'aa'字串和整數3的加法就會報錯,因為字串和整數是不能做加法運算的。我們定義的函式y只有乙個引數,如果我們給它傳入兩個或更多引數,同樣也會報錯。小猿們可以自己試試看引數個數不對時是什麼樣的錯誤。

因此,函式的呼叫,需要滿足函式名、引數型別、引數個數都要符合函式的定義才能執行成功。

函式的返回值

在python中函式都是有返回值的。如果我們沒有通過return顯示的返回,則python預設返回none。通過return我們就可以規定函式返回我們想要的值。我們想要的值可能是乙個,也可能是兩個或多個,return都能滿足我們的要求。

def my_division(a, b):

quotient = a // b

remainder = a % b

return quotient, remainder

這個函式計算a除以b,返回它們的商和餘數兩個值。return返回多個值時,用逗號,隔開它們即可。

我們看看呼叫該函式執行的結果:

in [158]: my_division(5, 2)

out[158]: (2, 1)

in [159]: my_division(20, 7)

out[159]: (2, 6)

in [160]: my_division(20, 5)

out[160]: (4, 0)

可以看到,函式返回多個值時,這多個值組成了乙個tuple(元組)。

遞迴函式

遞迴函式就是函式自己呼叫自己。我們以計算乙個整數的階乘來看看遞迴函式是什麼樣子的。階乘的公式如下:

n! = n * (n-1) * (n-2) * … * 2 * 1

它的遞迴函式的定義如下:

def factorial(n):

if n == 1:

print(n)

return 1

print(n, '*', end=' ')

return n * factorial(n-1)

遞迴函式都有乙個跳出遞迴的條件,在本函式中就是n == 1。當n != 1時就遞迴呼叫求比當前n小1的數的階乘,每次n減1,知道n == 1結束遞迴。這個遞迴過程其實就是生成了連乘(可以看函式的列印資訊):

n * (n-1) * (n-2) * … * 2 * 1

in [169]: f = factorial(5)

5 * 4 * 3 * 2 * 1

in [170]: f = factorial(10)

10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

練習把上面的遞迴函式改寫成用迴圈實現的函式,思考一下遞迴和迴圈的關係。

總結定義函式的要素:函式名、引數、函式體

呼叫函式的注意事項:引數型別、引數個數

函式體最後沒有使用return語句則預設返回none

函式通過return返回乙個或多個值,多個值以tuple的形式返回

python帝國cms Python基本資料型別

計算機的本質就是計算,在其內部是0和1的位元位的變化,對外表現就是資料的變化。那麼,計算機都能處理什麼資料呢?本質上,資料都是以位元組 byte 儲存的,表現上看,它們就是整數 浮點數和字串等。python的基本資料型別也不外乎於此。整數和浮點數就跟數學中的一樣,而字串就是各種字元的組合。數值型別 ...

帝國cms學習 從零學習帝國cms

從畢業後一直在用php寫後台程式也沒有用過相關的cms系統 現在開始學習帝國cms,學習順序 現在寫下來,作個記錄,希望對學習有幫組。有什麼錯誤 的地方,希望路過的朋友幫忙指正,3qqqq 2.安裝 3.入門教程 4.系統內建標籤語法介紹 5.我遇到過的問題就是更改模板裡的東西時,重新整理後還是原先...

騰訊帝國夢

如何才能讓qq擁有的眾多使用者資源變現成真金 這家依託即時通訊工具起家的網際網路公司給出的答案是 擴張!盡可能地擴張!依託qq這只 小企鵝 馬化騰開始了急速擴張,那麼,馬化騰野心勃勃構建的 全價值鏈 的網際網路帝國真的能實現嗎?新門戶征戰 我們正在設計新的商業模式。孫忠懷認為qq.com可以依靠即時...