【Python基礎】函數

函數

封裝功能,提高應用的模塊性和代碼重用率

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:主機域名、網絡空間、營銷軟件、網站建設、梁園網站維護、網站推廣。

1. 定義函數

1.1 函數內的第一條語句是字符串時,該字符串就是文檔字符串(docstring)

def my_fun():
    '''我是文檔字符串

    函數內第一句是字符串時
    該字符串就是文檔字符串
    '''
    pass
print(my_fun.__doc__)

''' 運行結果:
我是文檔字符串

    函數內第一句是字符串時
    該字符串就是文檔字符串
'''

1.2 創建一個可以判斷一個整數是否是素數的函數

# 判斷某個整數是否是素數,是返回Ture,不是返回False
def isPrimer(num):
    if num == 1:
        return False
    for i in range(2, num//2 + 1):
        if num%i == 0:
            return False
    return True
# 判斷某個區間內的素數
def CircleIsPrimer(head, stop):
    MyDict = {True: '素數', False: '非素數'}
    for i in range(head, stop+1):
        print(i, ' is ', MyDict[isPrimer(i)])
# 主函數
def main():
    print(isPrimer(2))
    CircleIsPrimer(1, 15)
# 調用主函數
main()

''' 運行結果
True
1  is  非素數
2  is  素數
3  is  素數
4  is  非素數
5  is  素數
6  is  非素數
7  is  素數
8  is  非素數
9  is  非素數
10  is  非素數
11  is  素數
12  is  非素數
13  is  素數
14  is  非素數
15  is  非素數
'''

1.3 創建一個可以輸出限定數值內的斐波拉契數列函數

def fib(num):
    a, b = 0, 1
    result = []
    while a < num:
        result.append(a)
        a, b =b, a + b
    return result
print(fib(10))

''' 運行結果
[0, 1, 1, 2, 3, 5, 8]
'''



2. 參數傳遞

在Python中,對象有不同類型的區分,變量沒有類型

2.1 默認參數。定義函數時,需要從右往左給參數默認值,調用函數時,如果沒有傳遞參數,則會使用默認參數

def loves(who,how='sincerely love',what='Python',why='Only because I love it'):
    print(who, end=' ')
    print(how, end=' ')
    print(what)
    print(why)
    return
loves('I')

''' 運行結果
I sincerely love Python
Only because I love it
'''

2.2 關鍵字。使用關鍵字參數允許函數調用時參數的順序與聲明時不一致

# 判斷某個整數是否是素數,是返回Ture,不是返回False
def isPrimer(num):
    if num == 1:
        return False
    for i in range(2, num//2 + 1):
        if num%i == 0:
            return False
    return True
# 判斷某個區間內的素數
def CircleIsPrimer(head, stop):
    MyDict = {True: '素數', False: '非素數'}
    for i in range(head, stop+1):
        print(i, ' is ', MyDict[isPrimer(i)])
CircleIsPrimer(stop = 15, head = 1)

''' 運行結果
1  is  非素數
2  is  素數
3  is  素數
4  is  非素數
5  is  素數
6  is  非素數
7  is  素數
8  is  非素數
9  is  非素數
10  is  非素數
11  is  素數
12  is  非素數
13  is  素數
14  is  非素數
15  is  非素數
'''

2.3 不定長參數。加了*的參數會以元組的形式導入,存放所有未命名的變量參數。加了**的參數會以字典的形式導入

# 2.3.1 以元組形式導入,包含形參列表之外的位置參數
def isLovePython(who, how, what, *why):
    print(who, end=' ')
    print(how, end=' ')
    print(what)
    print(why)
    return
isLovePython('I', 'love', 'Python', 'only', 'because', 'I', 'love', 'it')

''' 運行結果
I love Python
('only', 'because', 'I', 'love', 'it')
'''
# 2.3.2 以字典形式導入,包含已定義形參對應之外的所有關鍵字參數
def isLovePython(**lovePython):
    print(lovePython)
    return
isLovePython(who='I', how='sincerely love', what='Python')

''' 運行結果
{'who': 'I', 'how': 'sincerely love', 'what': 'Python'}
'''
# 2.3.3 二者組合使用,*形參 必須在 **形參之前
def LovePython(who_, *how_, **info):
    print(who_)
    print(how_)
    print(info)
    return
LovePython('I', 'need', 'Python', who='live', how='is short')

''' 運行結果
I
('need', 'Python')
{'who': 'live', 'how': 'is short'}
'''

2.4 強制位置參數。限制參數的傳遞方式

def my_fun(a, b, /, c, d, *, e, f):
    pass

# a,b   必須是位置形參
# c,d   位置形參或關鍵字形參
# e,f   必須是關鍵字形參



3. 解包實參列表

3.1 用*把實參從列表或元組中解包出來

love = ['I', 'need', 'Python']
def Printf(who: str, how: str, what: str = 'MySQL') -> None:
    print(who, '', how, '', what)
    return
Printf(*love)

''' 運行結果
I  need  Python
'''

3.2 用**把實參從字典中解包出來

love = {'who': 'I', 'how': 'need', 'what': 'Python'}
def Printf(who: str, how: str, what: str = 'MySQL') -> None:
    print(who, '', how, '', what)
    return
Printf(**love)

''' 運行結果
I  need  Python
'''



4. Lambda 表達式

常規定義函數的語法糖,只能是單個表達式

# 4.1 把匿名函數作為傳遞的實參
# 案例1:把 python、pytorch、pandas 篩選出來
love = ['python', 'PHP', 'pytorch', 'MySQL', 'pandas']
loveAI = filter(lambda x: x[0] == 'p', love)
print(list(loveAI))

''' 運行結果
['python', 'pytorch', 'pandas']
'''

# 案例2:字母全變大寫
love = ['python', 'PHP', 'pytorch', 'MySQL', 'pandas']
love = map(lambda x: x.upper(), love)
print(list(love))
''' 運行結果
['PYTHON', 'PHP', 'PYTORCH', 'MYSQL', 'PANDAS']
'''
# 4.2 把匿名函數作為函數返回值
love = ['python', 'PHP', 'pytorch', 'MySQL', 'pandas']
def LoveAI():
    return lambda x: x[0] == 'p'
love_AI = LoveAI()
loveAI = filter(love_AI, love)
print(list(loveAI))

''' 運行結果
['python', 'pytorch', 'pandas']
'''

本文題目:【Python基礎】函數
轉載注明:http://m.kartarina.com/article46/dsogihg.html

成都網站建設公司_創新互聯,為您提供動態網站網站維護網站改版商城網站用戶體驗微信公眾號

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

搜索引擎優化
主站蜘蛛池模板: 67194成l人在线观看线路无码| 久久AV无码精品人妻糸列| 精品久久久无码中字| 激情射精爆插热吻无码视频| 国产精品亚洲αv天堂无码| 亚洲AV无码1区2区久久| 午夜无码视频一区二区三区| 亚洲av无码乱码国产精品| 人妻少妇看A偷人无码精品| 国产AV无码专区亚洲AVJULIA| 无码人妻精品一二三区免费| 精品无码一区二区三区爱欲| 国产成人无码精品一区在线观看| 久久久无码人妻精品无码| 中文字幕无码日韩专区| 成人无码区免费视频观看| 亚洲日韩国产精品无码av| 亚洲中文字幕无码一区| 亚洲精品无码久久久| 久久久久无码精品国产app| 日韩乱码人妻无码中文字幕久久| 一本一道AV无码中文字幕| 无码日韩精品一区二区人妻| 精品久久久久久无码中文字幕一区| 国产免费无码AV片在线观看不卡| 性色AV一区二区三区无码| 色综合99久久久无码国产精品| 18精品久久久无码午夜福利| 国产V亚洲V天堂无码久久久| 亚洲精品无码Av人在线观看国产 | 亚洲va无码va在线va天堂| av色欲无码人妻中文字幕| 蜜色欲多人AV久久无码| 人妻少妇看A偷人无码精品视频| 亚洲av无码成人影院一区| 亚洲av成本人无码网站| 国产精品JIZZ在线观看无码| 免费无遮挡无码视频网站| 精品韩国亚洲av无码不卡区| 亚洲国产综合无码一区二区二三区 | 高清无码视频直接看|