3分鐘掌握 Python 中的函數

2024年12月14日14:02:06 科技 1437

3分鐘掌握 Python 中的函數 - 天天要聞

Python 中的函數

1. 功能介紹

Python 中的函數是執行特定任務或一組任務的代碼塊。函數接受輸入參數、執行操作並返回結果。它們使用關鍵字定義,後跟函數名稱和一對括弧。def

def greet(name):
  """This function greets the person passes in a parameter"""
  print(f"Hello, {name}!")

#Calling the function
greet("Alice")


2. 函數參數和返回值

函數可以採用多個參數,也可以返回值。參數是調用函數時將傳遞給函數的值的佔位符。

def add(a, b):
  """This function adds two numbers."""
  return a + b

result = add(3, 5)
print(result)  #Output: 8

在這裡,該函數採用兩個參數和 ,並返回它們的總和。然後列印結果。addab

函數的基本概念

1. 默認參數

在 Python 中,您可以為參數分配默認值,在調用函數時使其成為可選值。

def power(base, exponent=2)
  """This function calculates the power of a number with a default exponent of 2."""
  return base ** exponent

result1 = power(2)    #Equivalent to power(2, 2)
result2 = power(2, 3)

print(result1)    #Output: 4
print(result2)    #Output: 8

在此示例中,該函數的參數默認值為 。當僅使用參數調用函數時,將使用默認值。power2exponentbase

2. 可變長度參數列表

Python 允許您使用 和 定義可以接受可變數量參數的函數。*args**kwargs

def sum_all(*args):
  """This function calculates the sum of all passed arguments."""
  return sum(args)

result = sum_all(1, 2, 3, 4, 5, 6)
print(result)    #Output: 15

在此示例中,該函數用於接受任意數量的位置參數並計算它們的總和。sum_all*args

3. Lambda 函數(匿名函數

Lambda 函數是使用 關鍵字定義的小型匿名函數。lambda

multiply = lambda x, y: x * y
result = multiply(3, 4)
print(result)    #Output: 12

lambda 函數採用兩個參數並返回它們的乘積。Lambda 函數通常用於短期操作。muliply

函數的實際應用

1. 代碼可重用性

函數的主要優點之一是代碼的可重用性。通過將一段功能封裝到一個函數中,可以輕鬆地在整個程序中重用它。

def calculate_area(radius):
  """This function calculates the area of circle."""
  return 3.14 * radius**2

# Calculating the area for two circles
area1 = calculate_area(5)
area2 = calculate_area(8)

print(area1)    #Output: 78.5
print(area2)    #Output: 200.96

在此示例中,該函數允許在不複製代碼的情況下計算具有不同半徑的圓的面積。

2. 抽象和模塊化

函數提供了一種抽象複雜操作和增強模塊化的方法。將程序分解為更小、更易於管理的功能可使代碼庫更易於維護。

def process_data(data):
  """This function processess a list of numbers."""
  result = []
  for number in data:
    processed_number = number * 2 + 5
    result.append(processed_number)
  return result

#Using the function
input_data = [1, 2, 3, 4, 5, 6]
ouput_data = process_data(input_data)

print(output_data)    #Output: [7, 9, 11, 13, 15]

在這裡,該函數封裝了處理數字列表的邏輯,使代碼更加模塊化且更易於理解。

3. 使用函數進行錯誤處理

函數可以通過封裝可能在塊中引發異常的代碼來幫助您進行錯誤處理。try-except

def divide(a, b):
  """This function divides two number and handels division by zero."""
  try:
      result = a / b
      return result
  except ZeroDivisionError:
      print("Error: Cannot divide by zero.")
      return None

#Using th function
result1 = divide(10, 2)
result2 = divide(5, 0)

print(result1)    #Output: 5.0
print(result2)    #Output: None (with an error message)

在此示例中,該函數處理除以零的可能性,從而防止程序崩潰。

編寫函數的方法

1. 函數命名

為函數選擇有意義且具有描述性的名稱。精心選擇的名稱應傳達函數的目的。

# Less descripctive function name
def func1(x, y):
    return x + y

# More descriptive function name
def add_numbers(x, y):
    return x + y

為清楚起見,首選第二個示例,其名稱更具描述性。

2. 單一責任原則

遵循單一責任原則,該原則指出一個函數應該有一個明確的功能。如果一個函數執行多個獲取,請將其分解為更小的函數。

# Function violating the SIngle Responsibility Principle
def process_data_and_print_results(data):
    """This function processess data and prints the results."""
    processed_data = process_data(data)
    print_results(processed_data)

#Better approach: Separate responsibility
def process_data(data):
    """This function processes data."""
    result = []
    for number in data:
        processed_number = number * 2 + 5
        result.append(processed_number)
    return result

def print_results(data):
    """This function prints the results."""
    for result in data:
        print(result)

將責任分解為單獨的功能可增強代碼的可讀性和可維護性。

3. 文檔和注釋

提供文檔和注釋,以解釋函數的用途、預期的參數和返回值。

def calculate_area(radius):
    """
    This function calculates the area of a circle.

    Parameters:
    - radius (float): The radius of the circle.

    Returns:
    float: The area of the circle.
    """

    return 3.14 * radius**2

科技分類資訊推薦

阿維塔全球研發中心啟用,與華為聯合共創進入新階段 - 天天要聞

阿維塔全球研發中心啟用,與華為聯合共創進入新階段

近日,阿維塔全球研發中心正式啟用,可容納超過1000人。接近阿維塔的知情人士透露,該辦公大樓於2024年12月啟動裝修,其核心功能是承載阿維塔與華為聯合共創團隊的協同工作。此次全球研發中心的落成啟用,預示著阿維塔與華為的聯合共創將進入更大規
銷量承壓、動銷欠佳,高玉玲如何讓海信經銷商「脫困」? - 天天要聞

銷量承壓、動銷欠佳,高玉玲如何讓海信經銷商「脫困」?

文/曹雙濤編輯/楊博丞2025年按照既定目標,海信集團整體營收需達到3000億元。但2024年除高玉玲接棒代慧忠成為海信家電董事長,網傳海信裁員3萬人、裁員比例高達20%~30%外。公開數據顯示,2024年海信集團營收2143億元。另據海信家電發布的2024年年報顯示,當年海信家電營收和歸母凈利潤分別同比增長8.35%和17.99%,分別至9...
1699元能買到!榮耀Power有這些優缺點,選它續航焦慮真沒了! - 天天要聞

1699元能買到!榮耀Power有這些優缺點,選它續航焦慮真沒了!

有一天,一款主流手機的電池容量來到了8000mAh,且最關鍵的是,這樣的產品並沒有過多的犧牲手感,甚至可以說手感比主流旗艦機還好,這樣的一款手機也許會在其他方面稍微有所妥協,但不得不說,它確實從根源上杜絕了我們的續航焦慮問題。沒錯了!今天咱們來聊聊榮耀POWER,一款定價在千元左右產品,按照筆者的理解,榮耀是將...
倒計時3天!第二屆「興智杯」全國人工智慧創新應用大賽即將啟動,線上直播預約開啟 - 天天要聞

倒計時3天!第二屆「興智杯」全國人工智慧創新應用大賽即將啟動,線上直播預約開啟

前期,工業和信息化部、科學技術部、深圳市人民政府共同主辦了首屆「興智杯」全國人工智慧創新應用大賽(以下簡稱「大賽」),以需求為牽引,推動了一批關鍵技術加快突破,加快人工智慧與重點行業融合賦能,成為了目前國內規模最大、參賽主體最豐富的人工智慧專業賽事。為進一步發揮「以賽促研、以賽促用、以賽育人」的作用...
國產晶元殺瘋了!利潤暴漲26倍,這些小晶元藏著大突破 - 天天要聞

國產晶元殺瘋了!利潤暴漲26倍,這些小晶元藏著大突破

最近翻看國產晶元企業的成績單,可把我這個外行人看樂了——利潤動輒漲個兩三倍都是常規操作,最誇張的翻了26倍!您別誤會,這可不是在炒股,而是實打實的造晶元掙來的真金白銀。要說這波國產替代的浪潮,還真讓咱們在晶元領域啃下了幾塊硬骨頭。先說個身邊
iStorage 推出 26TB 容量 diskAshur 加密硬碟,1541 美元起 - 天天要聞

iStorage 推出 26TB 容量 diskAshur 加密硬碟,1541 美元起

IT之家 5 月 5 日消息,硬碟製造商 iStorage 宣布推出 26TB 版本 diskAshur DT2/3 系列加密硬碟,相應硬碟主打「提供物理密碼按鍵」,其中 diskAshur DT2 26TB 版本售價為 1541 美元(IT之家註:現匯率約合 11147 元人民幣),diskAshur DT3 26TB 版本定價為 1814 美元(現匯率約
無線信號增強秘籍,橋接和中繼模式哪個更強? - 天天要聞

無線信號增強秘籍,橋接和中繼模式哪個更強?

【ZOL中關村在線原創技術解析】隨著無線通信與計算機技術飛速發展,人們愈發渴望隨時隨地享受穩定的數據通信服務。無線路由器作為無線網路核心設備,作用關鍵。但當其信號覆蓋不足,如穿過兩堵牆後信號微弱時,可通過無線橋接或中繼模式連接兩個無線路由器,擴展網路、增強信號。中繼模式和橋接模式雖都能擴展網路覆蓋,但...
流暢更耐用 魅族Note 16將預裝Flyme 12 - 天天要聞

流暢更耐用 魅族Note 16將預裝Flyme 12

魅族官方透露,將於5月發布的魅族Note 16系列將出廠預裝Flyme 12新系統,這也是Flyme系統大版本首次在非旗艦機型上首發。魅族Note 16搭載紫光展銳T765處理器,配備6.78英寸LCD屏,解析度達2460*1080。後置採用八邊形相機模組,由5000萬像素主攝和200萬像素鏡頭組成。續航方面,內置6600mAh大容量電池,支持40W有線充電