Python初學(6) Python的函式

2021-07-04 21:08:44 字數 3235 閱讀 2820

這一篇筆記,學習python

的函式函式基礎

函式相關的語句和表示式 語句

例子calls

myfunc(「spam」,」eggs」,meat=ham)

def,

def adder(a,b=1,*c):

return

return a+b+c[0]

global

def changer():

global x;x=』new』

nonlocal

def changer():

nonlocal x;x=』new』

yield

def squares(x):

for i in range(x):yield i**2

lambda

funcs=[lambda x: x**2,lambda x:x*3]

編寫函式 1,

def是可執行**。

python的函式是由乙個新的語句編寫的,即

def。不像

c這樣的編譯語言,

def是以供可執行的語句

——函式並不存在,直到

python

執行了def

後才存在。事實上,在

if語句、

while

迴圈甚至是其他的

def中巢狀是合法的(甚至在某些場合還是很有效)。在典型的操作中,

def語句在模組檔案中編寫,並自然而然地在模組檔案第一次被匯入的時候生成定義的函式。 2,

def建立了以供物件並且將其賦值給某乙個變數名。

當python

執行到def

語句時,它將會生成乙個新的函式物件並將其賦值給這個函式名。就像所有的賦值一樣函式名變成了某乙個函式引用。函式名稱並沒有什麼神奇

——就像你將看到的那樣,函式物件可以賦值給其他的變數名,儲存在列表之中。函式也可以通過

lambda

表示式來建立。 3,

lambda

建立乙個物件但將其作為結果返回。

也可以用lambda

表示式建立函式,這一功能允許我們把函式定義內聯到語法上一條

def語句不能工作的地方。 4,

return 

將結果對像傳送給呼叫者。

當函式被呼叫時,其呼叫者停止執行直到這個函式完成了它的工作,之後函式才將控制權返回給呼叫者。函式是通過return

語句將計算得到的值傳遞給呼叫者的,返回值為函式呼叫結果。 5,

yield

向呼叫者發回乙個結果物件,但是記住它離開的地方。

像生成器這樣的函式可以通過yield

語句來返回值,並掛起他們的狀態以便稍後能夠恢復狀態。 6,

global

宣告了乙個模組級的變數並被賦值。

在預設情況下,所有在乙個函式中被賦值的物件,是這個函式的本地變數,並且僅在這個函式執行的過程中存在。為了分配乙個可以在整個模組中都可以使用的變數,函式需要在global

語句中將它列舉出來。通常情況下,變數名往往需要關注它的作用域(也就是變數儲存的地方),並且是通過實賦值語句將變數名繫結作用域的。 7,

nonlocal

宣告了將要賦值的乙個封閉的函式變數。

類似的,python3.0

中新增的

nonlocal

語句允許封閉的函式作為保留狀態的乙個地方

——當乙個函式呼叫的時候,資訊被記住了

——而不必使用共享的全域性名稱。

8,函式是通過賦值(物件引用)傳遞的。在

python

中,引數通過賦值傳遞給了函式(也就是說,就像我們所學過的,使用物件引用)。

python

的模式中呼叫者以及函式通過引用共享物件,但是改變傳遞的可變物件可以改變呼叫者共享的那個物件。

9,引數、返回值以及變數並不是宣告。

就像在python

中所有的一樣,在函式中並沒有型別約束。實際上,從一開始函式並不需要宣告:可以傳遞任意型別的引數給函式,函式也可以返回任意型別的物件。其結果就是,函式常常可以用在很多態別的物件身上,任意支援相容介面(方法和表示式)的物件都能使用,無聊它們是什麼型別。

詳細範例

def語句

def語句將建立乙個函式物件並將其賦值給乙個變數名。

def語句一般格式如下:

def (arg1,arg2,... argn):

就像所有的多行python

語句一樣,

def包含了首行並有乙個**塊跟隨在後邊,這個**塊通常都會縮排(或者就是冒號後邊簡單的一句)。而這個**塊就成為了函式的主體

——也就是每當呼叫函式的

python

所執行的語句。

def的首行定義了函式,賦值給了函式物件,並在括號中包含了

0個或以上的引數(有些時候成為是形參)。在函式呼叫的時候,在首行的引數名賦值給了括號中的傳遞的物件。

函式主體往往包含了一條return

語句。

def (arg1,arg2,... argn):

...return 

python的

return

語句可以在函式主體的任何地方出現。它表示函式呼叫的結束,並將結果返回至函式呼叫處。函式也可以不反回結果。如果沒有

return,

函式一直執行到函式結束,從技術角度來講,乙個沒有返回值的函式自動返回乙個

none

物件,但是這個值往往是被忽略的。

函式也許會有yield

語句,這在每次都會產生一系列值是被用到。

第乙個例子:定義和呼叫

前面def 

開始為定義,後面的

x=times(3.14,4)

為呼叫。

第二個例子:尋找序列的交集

定義了乙個intersect

函式,裡面乙個

for 

迴圈語句塊,乙個

if判斷語句。注意縮排對齊。

本地變數

前面例子中,函式題裡面的res,x,

引數seq1,seq2,

都是本地變數,所謂的本地變數就是在函式體裡面有用,出了函式體就沒用了,無法使用。有其他語句學習經驗的應該能發現這個就是其他語言的區域性變數。在某個**塊有用,出了**塊就沒用了。

python基礎6 python函式

python函式 一 函式的引數 1 函式的引數從呼叫的角度來講可以分為形式引數和實際引數,也可叫形參和實參。形參 變數只有在被呼叫時才分配記憶體單元,在呼叫結束時,即刻釋放所分配的記憶體單元。因此,形參只在函式內部有效。函式呼叫結束返回主呼叫函式後則不能再使用該形參變數 實參 可以是常量 變數 表...

python小測驗6 Python小記6

8.4 迴圈計算 程式中,利用迴圈流程,進行重複計算。例項演示 利用迴圈以及賦值運算等,計算1 100的和。按照數學等差數列公式,可以輕鬆得出 和 s 1 100 100 2,但是現在我們需要使用程式迴圈,進行原始的方法計算,s 1 2 3 4 100 0 100求和 定義計數器,初始化 i 1 定...

6 Python基礎 函式練習

1.設計乙個函式,統計乙個字串中出現頻率最高的字元 單個符號 及其出現次數 定義函式 def str max count2 my str if len my str 1 print 輸入錯誤!return my dic for item in my str my dic.update max cou...