python基礎三_01_函數編程

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簡潔好用,但是不建議大家濫用。用多了,程序可讀性很差。

6.使用lambda好處

(1).lambda 函數比較輕便,即用即刪除,很適合需要完成一項功能,但是此功能只在此一處使用, 連名字都很隨意的情況下;
(2).匿名函數,一般用來給 filter, map 返樣的函數式編程服務;
(3).作爲回調函數,傳遞給某些應用,比如消息處理
(4).不用考慮命名衝突問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章