Python教程(14)——Python函數的入門學習

来源:https://www.cnblogs.com/kiwiblog/archive/2023/09/24/17726250.html
-Advertisement-
Play Games

函數是什麼?在編程中,函數是一段可重用的代碼塊,用於完成特定任務或執行特定操作。它可以接輸入參數並返回一個值或執行一系列操作。函數可以幫助程式員將代碼模塊化,提高代碼的可讀性和可維護性。 函數通常包括以下組成部分: 函數名:用於標識函數,並可以通過函數名調用執行該函數。 參數:輸入給函數的值,在函數 ...


函數是什麼?在編程中,函數是一段可重用的代碼塊,用於完成特定任務或執行特定操作。它可以接輸入參數並返回一個值或執行一系列操作。函數可以幫助程式員將代碼模塊化,提高代碼的可讀性和可維護性。

函數通常包括以下組成部分:

  1. 函數名:用於標識函數,並可以通過函數名調用執行該函數。
  2. 參數:輸入給函數的值,在函數內部可以使用參數進行操作或計算。
  3. 函數體:包含函數執行的代碼塊。在函數體中可以進行各種操作、計算、邏輯判斷等任務。
  4. 返回值:函數可以返回處理結果,供調用者使用。

每種編程語言對於函數的語法規範可能所有不同,但是都是包含函數組成部分的。

Python函數組成

Python函數的定義通包括以下幾個部分:

  1. 函數頭部:使用關鍵字 def 開始,後跟函數名和一對圓括弧 ( )。圓括弧內可以包含函數的參數,多個參數之間用逗號分隔,最後在右括弧)之後要加個冒號:無論是括弧還是冒號一定都要是英文狀態下的。
  2. 函數體:函數體是由函數的操作邏輯組成的代碼塊,函數體內的代碼需要縮進,通常使用4個空格或製表符(Tab鍵)進行縮進。
  3. 函數返回值:函數可以返回一個值使用關鍵字 return 後跟要返回的值。

以下是一個簡單的示例,展示了一個算兩個數之和的函數:

def add_numbers(num1, num2):
	sum = num1 + num2
    return sum

result = add_numbers(5, 3)
print(result)  # 輸出:8

在這個示例中,函數 add_numbers 接收兩個參數 num1num2,計算它們的和並返回結果。通過調用 add_numbers(5, 3) 可以得到結果 8將結果賦值給變 result,最後列印 result 的值。

Python函數解釋

上述的add_numbers是個非常簡單的函數,但是初學者朋友如果不註意相關規則的話,可能會造成懷疑人生的結果。

正如Python函數的語法組成那樣,Python是用def開頭來定義一個函數的,然後空格後跟上函數名add_numbers,我們專業一點的叫法的話,叫函數定義,在使用一個函數之前,必須先定義,否則就會報語法錯誤。

比如我們像下麵這樣書寫,就不行的,會一個NameError的錯誤。NameError: name 'add_numbers' is not defined

result = add_numbers(5, 3)

def add_numbers(num1, num2):
    sum = num1 + num2
    return sum

print(result) 

接著加上括弧,括弧裡面跟上參數名,這裡的參數名我們稱之為形式參數,簡稱形參,這個在編程當中是一個比較重要的概念,特別是在C語言當中。然後右括弧後面加上一個冒號,後面就另起一行寫函數體,當然在一些非常簡單的函數體當中,可能直接跟在冒號後面,比如:

if a == 1: return 1

在leetcode編程中,這種寫法也經常見到。

如果是超過一行的,一般都是另起一行寫函數體。函數體內的代碼需要縮進,通常使用4個空格或製表符進行縮進。這裡要特別註意,在函數體中, 要不都用4個空格,要不就用製表符,千萬不要混用 ,一個製表符又剛好等於4個空格,所以從錶面上看確實是對齊了,對於沒有編程經驗的初學者來說,一旦混用,又不懂得利用搜索引擎的話,可能一個晚上你都會困在那裡,百思不得其解。

混用的話,一般會報以下錯誤:

IndentationError: unindent does not match any outer indentation level


意思大概就是說你縮進不匹配,大概率就是製表符和空格混用了!但是如果你是用PyCharm等一些高級的IDE,可能這些IDE會自動幫你修正這些對齊的bug,而如果你是從其他編輯器複製代碼到PyCharm中的,這些沒有對齊的錯誤並不會自動的修正,還是需要你手動就糾正的,所以還是推薦大家儘量使用PyCharm編寫Python代碼。

Python函數類型

Python當中有各種類型的函數,像上面那種就是比較普通的自定義函數,顧名思義,就是自己定義的函數。在 Python 中,還有以下幾種常見的函數類型。

內置函數

Python 提供了一些內置函數,可以直接使用,不需要導入任何模塊,如 print()len()type() 等,

匿名函數

匿名函數也稱為 lambda 表達式,是一種簡潔的函數定義方式,通常用於一次性的簡單函數。例如:

multiply = lambda x, y: x * y
result = multiply(3, 5)
print(result)  # 輸出 15

閉包函數

閉包函數是指在一個函數內部定義了另一個函數,並且內部函數可以訪問外部函數的變數。這種函數形式可以用來創建一些特定的函數,例如函數工廠或者裝飾器。

def outer_function(x):
    def inner_function(y):
        return x + y
    return inner_function

add_5 = outer_function(5)
result = add_5(3)
print(result)  # 輸出 8

生成器函數

生成器函數使用 yield 關鍵字來定義,可以通過迭代器的方式逐步生成結果,而不是一次性生成所有結果。

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

fib = fibonacci()
print(next(fib))  # 輸出 0
print(next(fib))  # 輸出 1
print(next(fib))  # 輸出 1

這些是 Python 中常見的函數類型,每種類型都有不同的特點和用途,一些比較高級用法的函數,後面學到了我們在來講,現在只需要瞭解下就可以了。

更多精彩內容,請關註同名公眾:一點sir(alittle-sir)


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

-Advertisement-
Play Games
更多相關文章
  • React和Vue是前端開發中的兩大熱門框架,各自都有著強大的功能和豐富的生態系統。然而,你有沒有想過,在一個項目中同時使用React和Vue?是的,你沒有聽錯,可以在同一個項目中混用這兩個框架!本文就來分享 3 個用於混合使用 React 和 Vue 的工具! Veaury Veaury 是一個基 ...
  • UI組件庫提供了各種常見的 UI 元素,比如按鈕、輸入框、菜單等,只需要調用相應的組件並按照需求進行配置,就能夠快速構建出一個功能完善的 UI。 雖然市面上有許多不同的UI組件庫可供選擇,但在2023年底也並沒有出現一兩個明確的解決方案能夠適用於所有情況。因為不同的前端框架(例如React、Angu ...
  • 背景介紹 我們存在著大量在PC頁面通過表格看數據業務場景,表格又分為兩種,一種是 antd / fusion 這種基於 dom 元素的表格,另一種是通過 canvas 繪製的類似 excel 的表格。 基於 dom 的表格功能豐富較為美觀,能實現多表頭、合併單元格和各種自定義渲染(如表格中渲染圖形 ...
  • 在現代的Web開發中,優化用戶體驗至關重要。一種常見的方法是在頁面載入時預載入圖片,並展示一個載入進度條,讓用戶瞭解載入進度。在本文中,我們將深入探討如何實現這兩個關鍵功能,以提高網站性能和用戶滿意度 ...
  • 9 月 16 日,全棧 Web 框架 Remix 正式發佈了 2.0 版本,Remix 團隊在發佈 1.0 版本後經過近 2 年的持續努力,發佈了 19 個次要版本、100 多個補丁版本,並解決了數千個問題和拉取請求,終於迎來了第二個主要版本! Remix 具有以下特性: 追求速度、用戶體驗(UX) ...
  • Uber公司技術棧介紹 Uber(Uber Technologies,Inc.)中文譯作“優步”,是一家美國矽谷的科技公司。Uber在2009年,由加利福尼亞大學洛杉磯分校輟學生特拉維斯·卡蘭尼克和好友加勒特·坎普(Garrett Camp)創立。因旗下同名打車APP而名聲大噪。Uber已經進入中國 ...
  • 實踐環境 python 3.6.2 scikit-build-0.16.7 win10 opencv_python-4.5.4.60-cp36-cp36m-win_amd64.whl 下載地址: https://pypi.org/project/opencv-python/4.5.4.60/#fil ...
  • 概述 表單驗證的最終效果大家都懂,這裡不闡述了,主要從巨集觀角度說說blazor中表單驗證框架涉及到的類,以及它們是如何協作的,看完這個,再看官方文檔也許能更輕鬆點。 blazor中的驗證框架分為兩部分:基礎驗證框架 和 基於數據註釋Atrrbute的驗證器,當然也提供了很多擴展點。註意我們通常使用數 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...