詳解 Python 中的函式型別

2021-09-05 10:45:22 字數 3237 閱讀 9698

函式是可重⽤的**塊,使⽤函式可以幫助我們組織**的結構。我們建立函式的⽬的,是能在程式運⾏中多次使⽤⼀系列**,⽽不⽤重複書寫**。

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

#statement inside function

縮排

空⽩區在 python 中⼗分重要。實際上,空⽩區在各⾏的開頭⾮常重要。這被稱作縮排(indentation)。在邏輯

⾏的開頭留下空⽩區(使⽤空格或製表符)⽤以確定各邏輯⾏的縮排級別,⽽後者又可⽤於確定語句的分組。這意味著放置在⼀起的語句必須擁有相同的縮排。每⼀組這樣的語句被稱為塊(block)。有⼀件事你需要記住:錯誤的縮排可能會導致錯誤。所有在函式內部的宣告,都必須使⽤相等的縮排。函式可以沒有引數,也可以有多個引數。多個引數之間⽤逗號隔開。還可以使⽤ pass 關鍵字忽略掉函式主題的宣告。

我們看⼀個函式的例⼦,下⾯的函式將計算指定範圍的整數之和:

def sum(start, end):

result = 0

for i in range(start, end + 1):

result += i

print(result)

sum(1, 10)

在上⾯的**中,我們定義了⼀個叫作 sum() 的函式,該函式有兩個引數(start和 end),該函式將從 start 開始,累加到 end,最後列印出累積之和。**運⾏的結果為 55。

上⽂定義的函式只是簡單地在控制台列印出結果,如果我們想要將計算結果賦值給變數,以便做更深⼊的處理時應該怎麼辦?當我們遇到這種情況時,可使⽤ return語句,將返回函式計算結果並且退出函式。例如:

def sumreturn(start, end):

result = 0

for i in range(start, end + 1):

result += i

return result

a = sumreturn(1, 5)

print(a)

在上⾯這段**中,我們定義了有返回值的函式 sumreturn(),並將其結果賦值給變數 a。上⾯**的運⾏結果為 15。

當然, return 語句也可以不返回值,⽽是⽤來退出函式(實際上會返回 none,為nonetype 物件)。每⼀個函式都在其末尾隱含了⼀句 return none,除⾮你寫了你⾃⼰的 return 語句。

在 python 中,如果你不指定 return 的返回值,則會返回 none 值。

全域性變數指的是不屬於任何函式,但又可以在函式內外訪問的變數。⽽局域變數指的是在函式內部宣告的變數,局域變數只能在函式內部使⽤,⽆法在函式外訪問(函式執⾏完後,會銷毀內部定義的區域性變數)。

下⾯我們通過例⼦來演⽰這兩者的區別:

global_var = 12 # 定 義 全 局 變 量

def func():

local_var = 100 # 定 義 局 部 變 量

print(global_var) # 可 以 在 函 數 內 部 訪 問 全 局 變 量

func() # 調 用 函 數 func()

print(local_var) # 無 法 訪 問 變 量 local_var

上述**將會出現錯誤:

nameerror: name 'local_var' is not defined
我們再看⼀個例⼦:

xy = 100 # 定 義 全 局 變 量xy

def func():

xy = 200 # 定 義 局 部 變 量xy

print(xy) # 此 時 訪 問 的 是 局 部 變 量xy

func() # 調 用 函 數 func()

該**顯⽰的結果是 200,不是 100。

使⽤ global 關鍵字,可以將區域性變數同全域性變數繫結在⼀起。例如:

t = 1

def increment():

global t # 現 在 的 變 量t在 函 數 內 外 都 是 一 致 的

t = t + 1

print(t) # 輸 出 2

increment()

print(t) # 輸 出 2

使⽤ global 關鍵字宣告全域性變數時,⽆法直接賦值,⽐如「global t = 1」的寫法存在語法錯誤。

為引數指定預設值,只需在定義函式時使⽤賦值語句即可。例如:

def func(i, j = 100):

print(i, j)

上述定義的函式 func() 有兩個引數 i 和 j。 j 的預設值為 100,這意味著我們在調⽤這個函式的時候可以忽略掉 j 的值,⽐如 func(2),運⾏結果為 2 100。

為函式傳遞引數值的⽅法有兩種:位置引數和關鍵字引數。我們之前調⽤函式的時候都使⽤的是位置引數。下⾯我們看如何使⽤關鍵字引數:

def named_args(name, greeting):

print(greeting + " " + name)

named_args(name='jim', greeting='hello')

named_args(greeting='hello', name='jim')

named_args('jim', greeting='hello')

上述**運⾏結果都是「hello jim」。

關鍵字引數使⽤「name=value」的名稱、值對傳遞資料,正如上⾯**演⽰的那樣,使⽤關鍵字引數的時候,引數的順序是可以調換的,⽽且位置引數和關鍵字引數可以混合使⽤(只能先使⽤位置引數,後使⽤關鍵字引數)。

我們可以通過在 return 語句中使⽤逗號,將多個值返回,這種返回值的型別是元組。例如:

def bigger(a, b):

if a > b:

return a, b

else:

return b, a

s = bigger(12, 100)

print(s)

print(type(s))

運⾏結果為:

(100, 12)

詳解 Python 中的元組型別

目錄 7.1 建立元組 7.2 元組相關方法 在 python 中,元組 tuple 和列表 常相似,與列表不同的是,元組 旦創 就不可改變,也就是說,元組是不可變的。與列表一樣,元組也是序列,唯一的差別在於元組是不能修改的 你可能注意到了,字串也不能修改 元組語法很簡單,只要將一些值用逗號分隔,就...

python中函式詳解

1 什麼是函式?函式是一種工具,封裝乙個可重複呼叫的 塊 2 為什麼要用函式?如果不使用函式,將變得冗餘。可讀性差 3 怎麼用函式?定義函式 呼叫函式 有參函式 defadd x,y return x y 無參函式 defwelecome print welecome to my home 空函式 ...

python中的zip 函式詳解

一 zip iterables 函式詳解 1 zip 函式的定義 2 zip 函式的用法 python 3 zip 函式單個引數 in 1 list1 1,2,3,4 in 2 tuple1 zip list1 in 3 type tuple1 out 3 zip in 4 list tuple1 ...