1:函式的定義
首先,我們要定義乙個函式, 以說明這個函式的功能。
:def square_sum(a,b):
c = a**2 + b**2
return c
這個函式的功能是求兩個數的平方和。
首先,def,這個關鍵字通知python:我在定義乙個函式。square_sum是函式名。
括號中的a, b是函式的引數,是對函式的輸入。引數可以有多個,也可以完全沒有(但括號要保留)。
我們已經在迴圈和選擇中見過冒號和縮進來表示的隸屬關係。
c = a**2 + b**2 # 這一句是函式內部進行的運算
return c # 返回c的值,也就是輸出的功能。python的函式允許不返回值,也就是不用return。
return可以返回多個值,以逗號分隔。相當於返回乙個tuple(定值表)。
return a,b,c # 相當於 return (a,b,c)
在python中,當程式執行到return的時候,程式將停止執行函式內餘下的語句。return並不是必須的,當沒有return, 或者return後面沒有返回值時,函式將自動返回none。
none是python中的乙個特別的資料型別,用來表示什麼都沒有,相當於c中的null。none多用於關鍵字引數傳遞的預設值。
2:函式呼叫和引數傳遞
定義過函式後,就可以在後面程式中使用這一函式:
print square_sum(3,4)
python通過位置,知道3對應的是函式定義中的第乙個引數a, 4對應第二個引數b,然後把引數傳遞給函式square_sum。
(python有豐富的引數傳遞方式,還有關鍵字傳遞、表傳遞、字典傳遞等,基礎教程將只涉及位置傳遞)
函式經過運算,返回值25, 這個25被print列印出來。
我們再看下面兩個例子
複製**
a = 1
def change_integer(a):
a = a + 1
return a
print change_integer(a)
print a
#===(python中 "#" 後面跟的內容是注釋,不執行 )
b = [1,2,3]
def change_list(b):
b[0] = b[0] + 1
return b
print change_list(b)
print b
複製**
第乙個例子,我們將乙個整數變數傳遞給函式,函式對它進行操作,但原整數變數a不發生變化。
第二個例子,我們將乙個表傳遞給函式,函式進行操作,原來的表b發生變化。
對於基本資料型別的變數,變數傳遞給函式後,函式會在記憶體中複製乙個新的變數,從而不影響原來的變數。(我們稱此為值傳遞)
但是對於表來說,表傳遞給函式的是乙個指標,指標指向序列在記憶體中的位置,在函式中對錶的操作將在原有記憶體中進行,從而影響原有變數。 (我們稱此為指標傳遞)
3:總結
def function_name(a,b,c):
statement
return something # return不是必須的
函式的目的: 提高程式的重複可用性。
return none:
通過位置,傳遞引數。
基本資料型別的引數:值傳遞
表作為引數:指標傳遞
Python學習 自定義函式
使用 def 命令建立自定義函式 以python3.4.3版本為例,自定義函式使用方法如下 下例中,return後的 括號 可有可無,但 雙引號 必須要有!本例中,return可用print 替換 def a1 return good morning,doovin 在idle互動介面呼叫 a1 函式...
學習筆記 自定義函式基礎
自定義函式 簡述 c語言程式中,軟體模組用函式實現 用於實現模組化程式設計 1.將乙個大的程式劃分成若干程式模組,每個模組實現一定的功能麼,以方便分工,或降低開發難度。2.程式進行除錯時,分別對每一模組進行除錯,在較小的範圍內查錯並改正。核心思想 自頂向下,逐步求精。優勢 降低程式的複雜度,使程式設...
Python學習(九) 自定義函式
在python中,可以建立4種函式 全域性函式 可以由建立該函式的同一模組中的任意 呼叫。區域性函式 定義在其他函式之內,只能由定義的函式呼叫。lambda函式 是表示式,可以在任何需要使用的地方定義。1.全域性函式 def functionname parameters suit paramete...