Python 定義函數(shù)使用 def 關(guān)鍵字,一般格式如下:
def function_name(parameter_list):
pass
默認(rèn)情況下,參數(shù)值和參數(shù)名稱按函數(shù)聲明中定義的順序進(jìn)行匹配。
函數(shù)代碼塊以?def?關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號?()。
任何傳入?yún)?shù)和自變量必須放在圓括號中間,圓括號之間可以用于定義參數(shù)。
函數(shù)的第一行語句可以選擇性地使用文檔字符串描述函數(shù)說明。
函數(shù)內(nèi)容以冒號起始,并且進(jìn)行縮進(jìn)。
函數(shù)的定義示例如下:
def add(x, y):
result = x + y
return result
函數(shù)使用return [表達(dá)式]?結(jié)束函數(shù),返回一個或多個值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。
def get_fruits():
apple = "Apple"
banana = "Banana"
orange = "Orange"
return apple, banana, orange
a,b,c = get_fruits()
print(a, b, c)
函數(shù)定義只給了函數(shù)一個名稱,指定了函數(shù)里包含的參數(shù)和代碼塊結(jié)構(gòu)。
函數(shù)調(diào)用直接使用定義的函數(shù)名稱以及傳遞相應(yīng)的參數(shù)進(jìn)行調(diào)用。
Python默認(rèn)設(shè)置了函數(shù)的大遞歸調(diào)用次數(shù),開發(fā)者可以直接進(jìn)行設(shè)置。設(shè)置方法如下:
#!/usr/bin/python3
import sys
sys.setrecursionlimit(100) # 設(shè)置大遞歸次數(shù)為100
必須參數(shù)是函數(shù)調(diào)用時必須傳遞的參數(shù)。
#!/usr/bin/python3
def add(x, y):
result = x + y
return result
add(3, 2)
關(guān)鍵字參數(shù)用于函數(shù)調(diào)用時,使用形式參數(shù)關(guān)鍵字將實際參數(shù)賦值給函數(shù)的相應(yīng)形式參數(shù),函數(shù)調(diào)用過程中傳遞實際參數(shù)順序可以與形式參數(shù)順序不匹配,但所有的必須參數(shù)必須被賦值。
#!/usr/bin/python3
def add(x, y):
result = x + y
return result
add(y=2, x=3)
上述代碼中,add函數(shù)的調(diào)用傳遞的實際參數(shù)通過指定關(guān)鍵字參數(shù)實際指定相應(yīng)的形式參數(shù),不必按照形式參數(shù)順序匹配,但必須參數(shù)都必須被傳遞。
函數(shù)在定義過程中可以為指定參數(shù)默認(rèn)的值,并且必須參數(shù)必須放在默認(rèn)參數(shù)的左側(cè)。
#!/usr/bin/python3
def print_student(name, gender="男", age=28):
print(name)
print(gender)
print(age)
print_student("Bauer", "男", 30)
print_student("Lee")
print_student("Lisa","女")
print_student(age=30, name="Bob")
函數(shù)調(diào)用時,可以使用關(guān)鍵字參數(shù)對形式參數(shù)進(jìn)行賦值,默認(rèn)參數(shù)可以缺省,但必須參數(shù)必須被賦值,必須參數(shù)可以使用關(guān)鍵字參數(shù)賦值。如果必須參數(shù)不使用關(guān)鍵字參數(shù),則必須參數(shù)必須嚴(yán)格按照函數(shù)定義的順序傳遞,其默認(rèn)參數(shù)可以使用關(guān)鍵字參數(shù)選擇性賦值,沒有使用關(guān)鍵字參數(shù)傳遞的默認(rèn)參數(shù)將使用默認(rèn)值。
可變參數(shù)通過使用*
修飾形式參數(shù)定義可變參數(shù)。
函數(shù)定義時,可以定義可變參數(shù),在函數(shù)調(diào)用時傳遞可變的多個實際參數(shù)。
#!/usr/bin/python3
def add(*args):
result = 0;
for x in args:
result += x
return result
c = add(1, 2, 3, 4)
print(c)
c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(c)
tup1 = 1, 2, 3, 4
c = add(*tup1) # 傳入序列
print(c)
list1 = [1, 2, 3]
c = add(*list1)
print(c)
對應(yīng)定義了可變參數(shù)的的函數(shù),如果需要傳入序列作為實際參數(shù),需要在序列前加*
。
如果函數(shù)定義時有可變參數(shù)和默認(rèn)參數(shù),函數(shù)調(diào)用時可以使用關(guān)鍵字參數(shù)用于指定默認(rèn)參數(shù)。
#!/usr/bin/python3
def add(x, *args, y=100):
result = x + y;
for i in args:
result += i
return result
c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # 155
print(c)
c = add(1, 2, 3, 4, 5, 6, 7, 8, 9, y=10) # 55
print(c)
Python中,如果函數(shù)定義時可變參數(shù)放在默認(rèn)參數(shù)的左側(cè),則默認(rèn)參數(shù)需要使用關(guān)鍵字參數(shù)顯式指定。
關(guān)鍵字可變參數(shù)通過使用**
修飾形式參數(shù)定義,關(guān)鍵字可變參數(shù)為字典類型,關(guān)鍵字可變參數(shù)屬于可選參數(shù)。
#!/usr/bin/python3
def average_score(**args):
result = 0;
for key, value in args.items():
result += value
print(key + ": ", value)
result = result / len(args)
print("Average score is ", result)
return result
book = {"Bauer": 90, "Bob": 100, "Lisa": 70, "Lee": 100}
average_score(**book)
average_score(Bauer=100, Lisa=70, Lee=100)
函數(shù)調(diào)用時,關(guān)鍵字可變參數(shù)可以傳遞多個鍵值對,頁可以直接傳遞dictionary類型變量,此時需要使用**
修飾字典變量。
python 使用 lambda表達(dá)式來創(chuàng)建匿名函數(shù),函數(shù)定義如下:lambda [arg1 [,arg2,.....argn]]:expression
Lambda表達(dá)式定義的匿名函數(shù)的函數(shù)體不是一個代碼塊,因此,僅能在lambda表達(dá)式中封裝有限的邏輯。
Lambda表達(dá)式擁有自己的命名空間,且不能訪問自有參數(shù)列表外或全局命名空間里的參數(shù)。
雖然lambda函數(shù)看起來只能寫一行,卻不等同于C或C++的內(nèi)聯(lián)函數(shù),后者的目的是調(diào)用小函數(shù)時不占用棧內(nèi)存從而增加運行效率。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
sum = lambda arg1, arg2: arg1 + arg2;
# 調(diào)用sum函數(shù)
print(sum(10, 20))
print(sum(20, 20))
程序的所有的變量并不是在任何位置都可以訪問的,訪問權(quán)限決定于變量是在哪里賦值的。變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。
定義在函數(shù)內(nèi)部的變量擁有局部作用域,定義在函數(shù)外的擁有全局作用域,代碼塊內(nèi)部局部變量會覆蓋全局變量,在局部作用域內(nèi)修改全局變量的值時,需要使用global關(guān)鍵字對相應(yīng)全局變量進(jìn)行聲明,表明本作用域內(nèi)使用的是全局變量。
局部變量只能在其被聲明的函數(shù)內(nèi)部訪問,而全局變量可以在整個程序范圍內(nèi)訪問。調(diào)用函數(shù)時,所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。
#!/usr/bin/python3
# -*- coding:utf-8 -*-
base = 100
def sum(*args):
global base
base = 0
result = 0;
for i in args:
result += i
return result + base;
c = sum(1,2,3,4,5,6,7,8,9,10)
print(c) # 55
print(base) # 0
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
標(biāo)題名稱:Python3快速入門(五)——Python3函數(shù)-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://chinadenli.net/article42/cdpshc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、網(wǎng)站策劃、企業(yè)網(wǎng)站制作、標(biāo)簽優(yōu)化、響應(yīng)式網(wǎng)站、網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容