選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Python 教程

Python 主頁 Python 簡介 Python 入門 Python 語法 Python 註釋 Python 變數 Python 資料型別 Python 數字 Python 型別轉換 Python 字串 Python 布林值 Python 運算子 Python 列表 Python 元組 Python 集合 Python 字典 Python If...Else Python While 迴圈 Python For 迴圈 Python 函式 Python Lambda Python 陣列 Python 類/物件 Python 繼承 Python 迭代器 Python 多型 Python 作用域 Python 模組 Python 日期 Python 數學 Python JSON Python 正則表示式 Python PIP Python Try...Except Python 使用者輸入 Python 字串格式化

檔案處理

Python 檔案處理 Python 讀取檔案 Python 寫入/建立檔案 Python 刪除檔案

Python 模組

NumPy 教程 Pandas 教程 SciPy 教程 Django 教程

Python Matplotlib

Matplotlib 簡介 Matplotlib 入門 Matplotlib Pyplot Matplotlib 繪圖 Matplotlib 標記 Matplotlib 線條 Matplotlib 標籤 Matplotlib 網格 Matplotlib 子圖 Matplotlib 散點圖 Matplotlib 條形圖 Matplotlib 直方圖 Matplotlib 餅圖

機器學習

入門 均值、中位數、眾數 標準差 百分位數 資料分佈 正態資料分佈 散點圖 線性迴歸 多項式迴歸 多元迴歸 縮放 訓練/測試 決策樹 混淆矩陣 層次聚類 邏輯迴歸 網格搜尋 分類資料 K-means Bootstrap Aggregation 交叉驗證 AUC - ROC 曲線 K-近鄰

Python MySQL

MySQL 入門 MySQL 建立資料庫 MySQL 建立表 MySQL 插入 MySQL 選擇 MySQL Where MySQL Order By MySQL 刪除 MySQL 刪除表 MySQL 更新 MySQL Limit MySQL Join

Python MongoDB

MongoDB 入門 MongoDB 建立資料庫 MongoDB 集合 MongoDB 插入 MongoDB Find MongoDB Query MongoDB Sort MongoDB 刪除 MongoDB 刪除集合 MongoDB 更新 MongoDB Limit

Python 參考

Python 概述 Python 內建函式 Python 字串方法 Python 列表方法 Python 字典方法 Python 元組方法 Python 集合方法 Python 檔案方法 Python 關鍵字 Python 異常 Python 詞彙表

模組參考

Random 模組 Requests 模組 Statistics 模組 Math 模組 cMath 模組

Python 如何操作

刪除列表重複項 反轉字串 兩個數字相加

Python 示例

Python 示例 Python 編譯器 Python 練習 Python 測驗 Python 伺服器 Python 面試問答 Python 訓練營 Python 證書

Python 函式


函式是一段只在被呼叫時執行的程式碼塊。

你可以將資料(稱為引數)傳遞給函式。

函式可以返回資料作為結果。


建立函式

在 Python 中,函式使用 def 關鍵字定義

示例

def my_function()
  print("Hello from a function")

呼叫函式

要呼叫函式,請使用函式名後跟括號

示例

def my_function()
  print("Hello from a function")

my_function()
自己動手試一試 »

引數

資訊可以作為引數傳遞給函式。

引數在函式名之後、括號內指定。您可以新增任意數量的引數,只需用逗號分隔即可。

下面的例子有一個帶有一個引數 (fname) 的函式。呼叫函式時,我們傳遞一個名字,該名字在函式內部用於列印全名

示例

def my_function(fname)
  print(fname + " Refsnes")

my_function("Emil")
my_function("Tobias")
my_function("Linus")
自己動手試一試 »

引數在 Python 文件中通常縮寫為args



引數或實參?

術語引數實參可以指代同一事物:傳遞給函式的資訊。

從函式的角度來看

引數是函式定義中括號內的變數。

實參是在呼叫函式時傳送到函式的值。


引數數量

預設情況下,函式必須使用正確數量的引數呼叫。這意味著如果你的函式需要 2 個引數,你必須用 2 個引數呼叫該函式,不能多也不能少。

示例

此函式需要 2 個引數,並接收 2 個引數

def my_function(fname, lname)
  print(fname + " " + lname)

my_function("Emil", "Refsnes")
自己動手試一試 »
如果你嘗試用 1 個或 3 個引數呼叫函式,你會收到一個錯誤

示例

此函式需要 2 個引數,但只收到 1 個

def my_function(fname, lname)
  print(fname + " " + lname)

my_function("Emil")
自己動手試一試 »

任意引數,*args

如果你不知道有多少個引數將被傳遞到你的函式中,請在函式定義中引數名前面加上 *

這樣函式將接收一個引數元組,並可以相應地訪問其中的項

示例

如果引數數量未知,請在引數名前面加上 *

def my_function(*kids)
  print("The youngest child is " + kids[2])

my_function("Emil", "Tobias", "Linus")
自己動手試一試 »

任意引數在 Python 文件中通常縮寫為*args


關鍵字引數

你也可以使用 = 語法傳送引數。

這樣引數的順序就不重要了。

示例

def my_function(child3, child2, child1)
  print("The youngest child is " + child3)

my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
自己動手試一試 »

關鍵字引數在 Python 文件中通常縮寫為kwargs


任意關鍵字引數,**kwargs

如果你不知道有多少個關鍵字引數將被傳遞到你的函式中,請在函式定義中引數名前面加上雙星號:**

這樣函式將接收一個引數字典,並可以相應地訪問其中的項

示例

如果關鍵字引數數量未知,請在引數名前面加上雙 **

def my_function(**kid)
  print("His last name is " + kid["lname"])

my_function(fname = "Tobias", lname = "Refsnes")
自己動手試一試 »

任意關鍵字引數在 Python 文件中通常縮寫為**kwargs


預設引數值

下面的例子展示瞭如何使用預設引數值。

如果我們在沒有引數的情況下呼叫函式,它會使用預設值

示例

def my_function(country = "Norway")
  print("I am from " + country)

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
自己動手試一試 »

將列表作為引數傳遞

你可以將任何資料型別(字串、數字、列表、字典等)的引數傳遞給函式,它在函式內部將被視為相同的資料型別。

例如,如果你將一個列表作為引數傳遞,當它到達函式時它仍然是一個列表

示例

def my_function(food)
  for x in food
    print(x)

fruits = ["apple", "banana", "cherry"]

my_function(fruits)
自己動手試一試 »

返回值

要讓函式返回值,請使用 return 語句。

示例

def my_function(x)
  return 5 * x

print(my_function(3))
print(my_function(5))
print(my_function(9))
自己動手試一試 »

pass 語句

function 定義不能為空,但如果你出於某種原因有一個沒有內容的 function 定義,請放置 pass 語句以避免錯誤。

示例

def myfunction()
  pass
自己動手試一試 »

僅位置引數

你可以指定函式只能接受僅位置引數,或只能接受關鍵字引數。

要指定函式只能接受僅位置引數,請在引數後新增 , /

示例

def my_function(x, /)
  print(x)

my_function(3)
自己動手試一試 »

沒有 , /,即使函式期望位置引數,你實際上也可以使用關鍵字引數

示例

def my_function(x)
  print(x)

my_function(x = 3)
自己動手試一試 »

但新增 , / 後,如果你嘗試傳送關鍵字引數,你將收到一個錯誤

示例

def my_function(x, /)
  print(x)

my_function(x = 3)
自己動手試一試 »

僅關鍵字引數

要指定函式只能接受僅關鍵字引數,請在引數之前新增 *,

示例

def my_function(*, x)
  print(x)

my_function(x = 3)
自己動手試一試 »

沒有 *, ,即使函式期望關鍵字引數,你也可以使用位置引數

示例

def my_function(x)
  print(x)

my_function(3)
自己動手試一試 »

但新增 *, / 後,如果你嘗試傳送位置引數,你將收到一個錯誤

示例

def my_function(*, x)
  print(x)

my_function(3)
自己動手試一試 »

組合僅位置引數和僅關鍵字引數

你可以在同一個函式中組合這兩種引數型別。

/ 之前的任何引數都是僅位置引數,* 之後的任何引數都是僅關鍵字引數。

示例

def my_function(a, b, /, *, c, d)
  print(a + b + c + d)

my_function(5, 6, c = 7, d = 8)
自己動手試一試 »

遞迴

Python 也接受函式遞迴,這意味著一個已定義的函式可以呼叫自身。

遞迴是常見的數學和程式設計概念。它的意思是函式呼叫自身。這帶來了好處,意味著你可以迴圈遍歷資料以達到結果。

開發人員在使用遞迴時應非常小心,因為它很容易編寫出永不終止的函式,或者使用過量記憶體或處理器能力的函式。然而,如果編寫正確,遞迴可以是一種非常高效且數學上優雅的程式設計方法。

在這個例子中,tri_recursion() 是我們定義用來呼叫自身的函式(“遞迴”)。我們使用 k 變數作為資料,它在每次遞迴時遞減(-1)。當條件不再大於 0(即等於 0)時,遞迴結束。

對於新的開發者來說,可能需要一些時間來弄清楚這究竟是如何工作的,最好的方法是透過測試和修改它。

示例

遞迴示例

def tri_recursion(k)
  if(k > 0)
    result = k + tri_recursion(k - 1)
    print(result)
  else
    result = 0
  return result

print("\n\nRecursion Example Results")
tri_recursion(6)
自己動手試一試 »


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援