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

科技分類資訊推薦

從聊天機械人到協作夥伴:AI智能體如何重塑企業工作 - 天天要聞

從聊天機械人到協作夥伴:AI智能體如何重塑企業工作

Scott White至今仍對人工智能從新奇技術轉變為真正工作夥伴的速度感到驚嘆。僅僅一年多前,這位Anthropic公司Claude AI產品負責人目睹了早期AI編程工具甚至無法完成一行代碼的窘境。如今,儘管並非專業程序員,他卻能親自構建
小米 16 系列迎最新爆料,Pro 系列鏡頭模組大改,橫向延伸全尺寸設計 - 天天要聞

小米 16 系列迎最新爆料,Pro 系列鏡頭模組大改,橫向延伸全尺寸設計

近日,包括數碼閑聊站在內等多個消息源,就下一代旗艦新機紛紛進行了最新爆料,其中小米 16 系列也在近日迎來了最新消息。根據最新爆料來看,小米 16 系列將會在以往的標準版、Pro 版、Ultra 的基礎上新增一款 Pro Max 型號。但一一對應來看,新款的小米 16 Pro 即對標標準版 , 為大家熟悉的 6.3 英寸小尺寸旗艦機型。而 1...
魅族 22 系列手機本月到來,提供全新開模小尺寸旗艦版本 - 天天要聞

魅族 22 系列手機本月到來,提供全新開模小尺寸旗艦版本

伴隨着時間來到 7 月,各大手機廠商的新機更新計劃有所放緩,不過根據多方爆料來看,「小廠代表」 星紀魅族旗下的魅族 22 系列將會在本月與大家見面。目前魅族 22 系列仍然十分 「神秘」,欠缺主要的配置爆料與外觀圖片作為參考。但根據部分什麼爆料者的消息來看,魅族 22 系列將會全新開模,並提供小尺寸旗艦版本可供選擇...
vivo X300 Pro 更多細節曝光,大 R 角直面屏,新款大底主攝方案加持 - 天天要聞

vivo X300 Pro 更多細節曝光,大 R 角直面屏,新款大底主攝方案加持

今天數碼博主數碼閑聊站在與網友互動中,透露了一款搭載聯發科天璣 9500 的 「大杯」 工程機的最新進展。參考爆料內容與評論區互動來看,預計為 vivo X300 Pro。除搭載聯發科天璣 9500 外,據悉該機一大變化之處在於屏幕部分,根據最新消息來看將會搭載一塊大 R 角直屏,不再採用曲面屏或微曲面屏設計。而這也將成為下一代...
數據驅動,柔性智能建造平台助力高效管理 - 天天要聞

數據驅動,柔性智能建造平台助力高效管理

長沙晚報掌上長沙7月1日訊(全媒體記者 劉嘉)6月30日,由長沙市智能建造產業鏈推進辦公室與中建五局三公司聯合承辦的「創新驅動 智建未來」科技活動舉行。該活動不僅展示了長沙在智能建造領域的創新成果,也為行業高質量發展提供了可複製的實踐經驗。
以前不敢想,機械革命搭配出4959元的RTX5050本,還有2.5K屏 - 天天要聞

以前不敢想,機械革命搭配出4959元的RTX5050本,還有2.5K屏

最近RTX5050本開始大面積登場,很多消費者也想知道,廠商到底能搭配出什麼樣配置?結果機械革命沒有讓大家失望,搭配出一個6199元的新品,補貼後價格4959元,再一次刷新新顯卡筆記本的價格新低。同時,其配置還不是很潦草,還是很平衡的,讓我們來看看。這款本配置了R9 7845HX處理器,12核心,24線程,台積電5nm工藝,Zen4...
中國移動三大核心布局 助力南亞東南亞數字經濟新發展 - 天天要聞

中國移動三大核心布局 助力南亞東南亞數字經濟新發展

【來源:雲南網】6月30日,由雲南省人民政府和雲南省工業和信息化廳聯合舉辦的面向南亞東南亞數字合作推介會在北京舉行,中國移動副總經理陳懷達出席,中國移動數智化部副總經理陶濤發表主題為《建設跨境數據交易高速公路,服務數字信息大通道建設》的演講