【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
  • MQTTnet 是一個高性能的MQTT類庫,支持.NET Core和.NET Framework。 MQTTnet 原理: MQTTnet 是一個用於.NET的高性能MQTT類庫,實現了MQTT協議的各個層級,包括連接、會話、發佈/訂閱、QoS(服務質量)等。其原理涉及以下關鍵概念: MqttCli ...
  • 在WPF中,源屬性(Source Property)指的是提供數據的屬性,通常是數據模型或者其他控制項的屬性,而目標屬性(Target Property)則是數據綁定的目標,通常是綁定到控制項的屬性,例如TextBlock的Text屬性。數據綁定將源屬性的值自動更新到目標屬性中。 主要包含以下幾個事件: ...
  • async/await 是 C# 中非同步編程的關鍵特性,它使得非同步代碼編寫更為簡單和直觀。下麵深入詳細描述了 async/await 的使用場景、優點以及一些高級使用方法,並提供了相應的實例源代碼。 使用場景: I/O 操作: 非同步編程特別適用於涉及 I/O 操作(如文件讀寫、網路請求等)的場景。在 ...
  • 使用過office的visio軟體畫圖的小伙伴都知道,畫圖軟體分為兩部分,左側圖形庫,存放各種圖標,右側是一個畫布,將左側圖形庫的圖標控制項拖拽到右側畫布,就會生成一個新的控制項,並且可以自由拖動。那如何在WPF程式中,實現類似的功能呢?今天就以一個簡單的小例子,簡述如何在WPF中實現控制項的拖拽和拖動,... ...
  • 1、Blazor Hybrid簡介 Blazor Hybrid 使開發人員能夠將桌面和移動本機客戶端框架與 .NET 和 Blazor 結合使用。在 Blazor Hybrid 應用中,Razor 組件在設備上是本機運行的。 這些組件通過本地互操作通道呈現到嵌入式 Web 視圖控制項。 組件不在瀏覽器 ...
  • 除了內置的數據集,scikit-learn還提供了隨機樣本的生成器。通過這些生成器函數,可以生成具有特定特性和分佈的隨機數據集,以幫助進行機器學習演算法的研究、測試和比較。 目前,scikit-learn庫(v1.3.0版)中有20個不同的生成樣本的函數。本篇重點介紹其中幾個具有代表性的函數。 1. ...
  • 從0到1,手把手帶你開發截圖工具ScreenCap------002實現通過文件對話框,選擇合適的文件夾,自定義預設的圖片保存位置,簡單易學 ...
  • 每次談到容器的時候,除了Docker之外,都會說起 Kubernetes,那麼什麼是 Kubernetes呢?今天就來一起學快速入門一下 Kubernetes 吧!希望本文對您有所幫助。 Kubernetes,一種用於管理和自動化雲中容器化工作負載的工具。 想象一下你有一個管弦樂隊,將每個音樂家視為 ...
  • 目錄 基本說明 安裝 Nginx 部署 VUE 前端 部署 Django 後端 Django admin 靜態文件(CSS,JS等)丟失的問題 總結 1. 基本說明 本文介紹了在 windows 伺服器下,通過 Nginx 部署 VUE + Django 前後端分離項目。本項目前端運行在 80 埠 ...
  • 從0到1,手把手帶你開發截圖工具ScreenCap------003實現最小化程式到托盤運行,- 為了方便截圖乾凈,實現最小化程式到托盤運行,簡潔,勿擾,實現最小化程式到托盤運行, 實現托盤菜單功能,實現回顯主窗體, 實現托盤開始截屏, 實現氣泡信息提示,實現托盤程式提示,實現托盤退出程式, 封裝完... ...