函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的**段。
def student_name(name):
「列印學生的名字」
print(『姓名:』, name)
return
例2:下面定義乙個函式,返回多個值
def student_name_and_age():
「記錄學生的名字和年齡」
name = input(『請輸入姓名\n』)
age = int(input(『請輸入年齡\n』))
print(f』姓名:;年齡:』)
return name,age
函式的呼叫
rst = student_name(『alice』)
rst = student_name_and_age()
name, age = student_name_and_age()
補充:函式可以巢狀呼叫
例4:函式巢狀呼叫
def worker(s):
rst = 10 / float(s)
return rst
def group_leader(s):
rst = worker(s) * 2
return rst
def cto(s):
return group_leader(s)
函式的引數傳遞
位置引數
預設引數
可變引數
關鍵字引數
命名關鍵字引數
1 位置引數:最簡單。位置引數須以正確的順序傳入函式、數量必須和宣告時的一樣
例1-3都是位置引數
2 預設引數:呼叫函式時,預設引數的值如果沒有傳入,則被認為是預設值。
例5:def student_name_and_age(name, age=『不願透露』):
「設定預設引數」
print(『姓名:%s 年齡 %s』 %(name, age))
呼叫時:預設引數可以不給值,也可以給值。
student_name_and_age(『張三』)
student_name_and_age(『張三』, 18)
3 可變引數:傳入的引數個數是可變的,可以是0個、1個到任意個。在函式呼叫時自動組裝為乙個tuple。
用法:在引數名前加個『*』。
例6:def all_student_names(*names):
for name in names:
print(『姓名:』, name)
呼叫時:
names = (『張三』,『李四』,『王五』)
all_student_names(names)
4 關鍵字引數:允許傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。
用法:在引數名前有2個』*』。
例7:def student_info(name, age, **kw):
print(f』我的名字叫:,年齡:,其它資訊:』)
def student_info_more(name, age, **kw):
print(f』我的名字叫:,年齡:,其它資訊:』)
if 『city』 in kw:
print(『來自:』, kw[『city』])
呼叫:student_info(『張三』, 18, height=180)
student_info_more(『張三』, 18, height=180, city=『北京』)
5 命名關鍵字引數:可以限制關鍵字引數的名字。
例8:『*』後的引數height和weight就是命名關鍵字引數。
def print_person_info(name, age, *, height, weight):
print(『我的名字叫:』, name, 『年齡:』, age,『身高』, height, 『體重』, weight)
在python中定義函式,可以用必選引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數。也可以組合使用。但是請注意,引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。
lambda匿名函式
lambda 只是乙個表示式,函式體比 def 簡單很多。
lambda 的主體是乙個表示式,而不是乙個**塊。僅僅能在 lambda 表示式中封裝有限的邏輯進去。
lambda 函式擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。
例9:lambda 若干個輸入引數 : 返回值的表示式。
lambda arg1, arg2: arg1 + arg2
呼叫時:
(lambda arg1, arg2: arg1 + arg2 )(1, 2)
更常見的定義和呼叫:
add = lambda arg1, arg2: arg1 + arg2
add(1,2)
高階函式
乙個函式可以接收另乙個函式作為引數,這種函式就稱之為高階函式。
例10:在func_x函式中,引數f就是另乙個函式名。
def func_x(x, f):
return f(x)
int2str = lambda x : str(x)
呼叫時:
func_x(-112,abs) #求-112的絕對值
func_x(-112,int2str) #把-112轉成字串
總結對比c語言來說,python的函式定義和呼叫都更簡潔
百度飛槳領航團 零基礎python速成營學習心得
偶然得知這個python速成營,我懷著試一試的心態前去報名。本課程週期為六天,每天都會有作業,助教老師也會無時無刻的耐心解答我們在編譯 現的問題。作為乙個python新手小白,可以說我對python的一切都是未知的。剛開始心情難免有些惶恐,經過一步步的學習之下,這六天的課程也即將結束。我們都知道,六...
百度飛槳領航團零基礎Python速成營學習心得
之前接觸過python,通過短短6天 直播 回看錄影,每日完成作業的形式,讓我對python物件導向有了進一步的認識。在接近2000人的課程 qq 群中,助教老師每天進行直播提醒 實時答疑 交流互動等,一起學習的同學們積極在群裡分享溝通問題,經常可以看到愛學習的小夥伴深夜還在研究怎麼作每日作業,這種...
百度飛槳領航團零基礎Python速成營 學習心得
資料如下 stu1.txt 孫同學,2020 5 21,20,男 77,56,77,76,92,58,91,84,69,91 stu2.txt 趙同學,2020 11 3,24,女 65,68,72,95,81,71,86,91,57,91 stu3.txt 王同學,2021 8 7,25,男 87...