【Python基礎】函數

来源:https://www.cnblogs.com/ohwell2aha/archive/2022/08/01/16540312.html
-Advertisement-
Play Games

函數 封裝功能,提高應用的模塊性和代碼重用率 1. 定義函數 1.1 函數內的第一條語句是字元串時,該字元串就是文檔字元串(docstring) def my_fun(): '''我是文檔字元串 函數內第一句是字元串時 該字元串就是文檔字元串 ''' pass print(my_fun.__doc_ ...


函數

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

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']
'''

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡單記錄,分享下這段時間學習Flask所用過的資料 學習Flask的這段時間,我在網上找了挺多,也看了挺多的資料,有視頻,也有文檔教程。 然後我發現,這方面資料有點雜而不全,就沒有特別好的的教程可看,而且對於咱這樣的新手如果一開始就去看官方的文檔,也看的迷迷糊糊,最後發現還是什麼都不會。 經過我這段 ...
  • 兄弟們,今天來實現一下用Python編寫密碼檢測器,並輸出詳細信息! 本次涉及知識點 文件讀寫 基礎語法 字元串處理 迴圈遍歷 代碼展示 # 導入系統包 import platform # 我給大家準備了一些資料,包括2022最新Python視頻教程、Python電子書10個G (涵蓋基礎、爬蟲、數 ...
  • 面向對象03 10.抽象類 abstract修飾符可以用來修飾方法也可以修飾類,如果修飾方法,那麼該方法就是抽象方法;如果修飾類,那麼該類就是抽象類 抽象類中可以沒有抽象方法,但是有抽象方法的類一定要聲明為抽象類 抽象類,不能使用new關鍵字來創建對象,它是用來讓子類繼承的 抽象方法,只有方法的聲明 ...
  • indexOf和subString取值走向圖;首先簡單介紹這者的作用,具體可以看官方API 1.indexOf的作用: 就是獲取某個字元串的其中具體一個字元的位置 2.subString的作用: 就是大家熟悉的切割,從那裡到那裡比如,從第一個到第五個等;當這個方法是重載的,不只有我說的這個方法;具體 ...
  • 明敏 曉查 發自 凹非寺 量子位 報道 | 公眾號 QbitAI 程式 bug 也能負負得正嗎? 還真可以。 比如程式員們再熟悉不過的排序演算法,通過兩個“bug”居然能歪打正著,實在令人匪夷所思。 請看這位程式員寫的數組升序排序代碼: for i = 1 to n do for j = 1 to n ...
  • 基礎確認:HTML、CSS、JavaScript AJAX可以: 不刷新頁面更新網頁 在頁面載入後從伺服器請求數據 在頁面載入後從伺服器接收數據 在後臺向伺服器發送數據 Ajax 的核心是 XMLHttpRequest 對象,用於和伺服器交換數據。 xmlhttp.open("GET","ajax_ ...
  • 多商戶商城系統,也稱為B2B2C(BBC)平臺電商模式多商家商城系統。可以快速幫助企業搭建類似拼多多/京東/天貓/淘寶的綜合商城。 多商戶商城系統支持商家入駐加盟,同時滿足平臺自營、旗艦店等多種經營方式。平臺可以通過收取商家入駐費,訂單交易服務費,提現手續費,簡訊通道費等多手段方式,實現整體盈利。 ...
  • 3 hashCode的內幕 tips:面試常問/常用/常出錯 hashCode到底是什麼?是不是對象的記憶體地址? 1) 直接用記憶體地址? 目標:通過一個Demo驗證這個hasCode到底是不是記憶體地址 public native int hashCode(); com.hashcode.HashCo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...