python基礎三_01_函數編程
導讀:
本文主要記錄自己學習python3基礎中函數編程的要點知識和例子;僅供自己梳理
一、python函數簡介
1.函數的定義
函數:是一個可以被重複調用的帶有一個入口和一個出口的固定的程序段.
2.函數的優點
a.減少冗餘代碼
b.代碼結構清晰
c.保持代碼的一致性
3.定義一個函數
(1).函數名一般以小駝峯命名,見名知意,其餘要求與變量的命名一樣
(2).函數名後面的()叫做參照括號
def 函數名(形參):
代碼塊
return
(3).舉例
def func_test1():
print('大家晚上好')
二、如何調用函數
1.函數的調用
函數的調用方法:函數名(實參)
(1).函數沒有調用的話不會執行
(2).參照括號內若定義了形參,那麼調用時要傳對應的實參
(3).定義函數時參照括號內定義的參數 我們稱爲 形參
(4).在調用函數的時候我們傳遞值 我們稱爲 實參
# 定義函數:func_test2()
def func_test2(name):
str2 = name + ' 歐力給!'
# 返回函數處理結果:str2
return str2
# 調用函數:func_test2(),並傳入實參:name='YDXQBJL'
print(func_test2('YDXQBJL'))
(5)可以發現其實參照括號是函數的入口,return是函數的出口。我們還可以定義多個形參。
# 定義
def func_test3(name,age):
str3 = name + '的年齡是:' + age
return str3
# 調用
res = func_test3('爺的心情悲寂寥','18')
# 打印結果
print(res)
三、函數參數的劃分
按照參數類型劃分:位置參數,關鍵字參數,默認參數,參數組
1.位置參數
位置傳參是我們在傳參的時候,實參傳遞的順序按照形參定義的順序迕行傳遞的傳參方式
def func1(name,city):
str1 = 'I am {},I come from {}'.format(name,city)
return str1
res1 = func1('ydxqbjl','beijing')
print(res1)
res2 = func1('beijing','ydxqbjl')
print(res2)
2.關鍵字參數
關鍵字傳參是我們在傳參的時候,以形參等於實參的形式忽略形參定義的順序迕行傳參的傳參方式 因爲 Python 解釋器能夠用參數名匹配參數值
def func2(name,city):
str2 = 'I am {},I come from {}'.format(name,city)
return str2
res1 = func2(name='ydxqbjl',city='beijing')
print(res1)
res2 = func2(city='beijing',name='ydxqbjl')
print(res2)
3.默認參數(缺省參數)
默認值傳參是在我們定義參數時候,我們給形參一個默認值,在我們調用函數的時候,如果沒有給有默認值的形參傳參,會自動採用默認值。
def func3(name,city = 'china'):
str3 = 'I am {},I come from {}'.format(name,city)
return str3
res3 = func3(name='ydxqbjl')
print(res3)
4.參數組(不定長參數):提高容錯率
處理比當初聲明時更多的參數,會將傳入的參數變成元組(*args)或者字典(**kwargs),聲明的時候不用命名
(1).元組參數組 :*args
通過給形參前面添加 * 使參數變成一個元組,所有傳遞的參數變成元組的元素
def func4_1(*args):
print(args)
func4_1()
func4_1(1,2)
func4_1(1,2,3,4,'asfd')
(2).字典參數組 :**kwargs
通過給形參前面添加 ** 使參數變成一個字典,所有傳遞的參數變成字典的鍵值對,返里傳參要求鍵等 於值的形式
def func4_2(**kwargs):
print(kwargs)
func4_2()
func4_2(a = 1)
func4_2(a=1,b=2,c=3)
5.實際中我們一般這樣定義一個函數
def funcName(e,f,g=2,*args,**kwargs):
a = args
b = kwargs
re = e,f,g,a,b
return re
response1 = funcName(1,2)
print(response1)
response2 = funcName(1,2,3,a=1)
print(response2)
response3 = funcName(1,2,3,4,a=1)
print(response3)
response4 = funcName(1,2,3,4,5,6,7,a=1,b=2,c=3)
print(response4)
四、匿名函數lambda
1.lambda函數簡介
Lambda函數,即Lambda 表達式,是一個匿名函數(不存在函數名的函數), Lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象。
2.使用
語法:lambda 參數:表達式(block)
參數:可選,通常以逗號分隔的變量表達式形式,也就是位置參數
表達式:不能包含循環,return,elif ,可以包含if.
L = lambda x:x*x
print(L(5))
25
3.例子
判斷一個數和10的大小
L = lambda x : 'x>10' if x >10 else 'x<10'
print(L(5))
如果用函數實現的話:
def L(x):
if x >10:
return 'x>10'
else:
return 'x<10'
print(L(11))
4.map()
map () 是python的內置函數,它接受一個函數和一個可迭代對象,並且通過函數依次作用在可迭代對象的每個元素上,得到一個新的對象。
5.練習題:
1.對一個列表中的元素進行平方
普通函數寫法:
lista = [1,2,3,4]
listb = []
def funcpf(x):
return x*x
for i in lista:
listb.append(funcpf(i))
print(listb)
使用map()函數後:
def funcpf(x):
return x*x
res1 = map(funcpf,[1,2,3,4])
print(list(res1))
使用lambda後:
res = map(lambda x:x*x,[1,2,3,4])
print(list(res))
2.兩個列表a = [1,2,3], b = [4,5,6] 把兩者中每個元素的數值相加在一起c=[5,7,9],你該如何處理?
a = [1,2,3]
b = [4,5,6]
c = map(lambda x,y:x+y,a,b)
print(list(c))
注意:即使lambda簡潔好用,但是不建議大家濫用。用多了,程序可讀性很差。