【Day 7-N17】Python函數(1)——函數定義、位置參數調用函數、關鍵字參數調用函數、函數的默認值

挑戰14天學會Python,第7天學習筆記!加油!

一、概述

函數(Function)是 Python 中用于封裝可重用代碼塊的基本結構。通過定義函數,我們可以將復雜邏輯拆分為更小、更易管理的單元,并通過參數傳遞不同的輸入值,從而提高代碼的可讀性、可維護性和復用性。


二、函數定義

(一)基本語法

def function_name(parameters):"""可選的文檔字符串"""# 函數體return result  # 可選

(二)示例

def greet(name):"""向用戶打招呼"""return f"Hello, {name}!"

(三)調用函數

message = greet("Alice")
print(message)  # 輸出:Hello, Alice!

三、位置參數調用

(一)定義

位置參數(Positional Arguments)是最常見的參數形式。調用時,實參的順序必須與形參的順序嚴格一致。

(二)示例

def add(a, b):return a + bresult = add(3, 5)  # 3 對應 a,5 對應 b
print(result)  # 輸出:8

(三)注意事項

  • 參數數量必須匹配,否則會引發 TypeError
  • 順序錯誤會導致邏輯錯誤,但不會報錯。

四、關鍵字參數調用

(一)定義

關鍵字參數(Keyword Arguments)通過參數名顯式指定實參,調用順序可與形參順序不同。

(二)示例

def describe_pet(animal, name):return f"I have a {animal} named {name}."# 使用關鍵字參數
info = describe_pet(name="Whiskers", animal="cat")
print(info)  # 輸出:I have a cat named Whiskers.

(三)混合使用

# 先位置后關鍵字
info = describe_pet("dog", name="Buddy")
print(info)  # 輸出:I have a dog named Buddy.

(四)注意事項

  • 關鍵字參數必須在位置參數之后。
  • 提高代碼可讀性,尤其適合參數較多的函數。

五、函數默認值

(一)定義

默認值參數(Default Arguments)允許在定義時為形參指定默認值。調用時可省略該參數,函數將使用默認值。

(二)示例

def greet(name, message="Hello"):return f"{message}, {name}!"# 使用默認值
print(greet("Alice"))  # 輸出:Hello, Alice!# 覆蓋默認值
print(greet("Bob", "Hi"))  # 輸出:Hi, Bob!

(三)注意事項

  • 默認值必須是不可變對象(如數字、字符串、元組)。 ? 錯誤示例: ? 正確做法:

    def append_item(item, lst=[]):  # 危險!默認值共享同一列表lst.append(item)return lst
    def append_item(item, lst=None):if lst is None:lst = []lst.append(item)return lst
  • 默認值僅在函數定義時計算一次,后續調用共享同一對象。


六、綜合應用案例

(一)用戶信息處理

def create_user(username, age=18, city="Unknown"):return {"username": username,"age": age,"city": city}# 位置參數 + 默認值
user1 = create_user("Alice")
print(user1)  # {'username': 'Alice', 'age': 18, 'city': 'Unknown'}# 關鍵字參數覆蓋默認值
user2 = create_user("Bob", age=30, city="New York")
print(user2)  # {'username': 'Bob', 'age': 30, 'city': 'New York'}

(二)數學運算函數

def calculate(a, b, operation="add"):if operation == "add":return a + belif operation == "subtract":return a - belse:return "Invalid operation"# 僅位置參數
print(calculate(5, 3))  # 8# 關鍵字參數指定運算
print(calculate(10, 4, operation="subtract"))  # 6

七、注意事項與最佳實踐

  1. 參數順序:位置參數 → 關鍵字參數 → 默認值參數。
  2. 可讀性:關鍵字參數和默認值能顯著提升代碼可讀性。
  3. 避免可變默認值:始終使用 None 作為可變對象的默認值占位符。
  4. 文檔字符串:為函數添加文檔字符串(docstring)說明參數用途。

八、總結

通過本筆記,我們系統學習了 Python 函數的基本定義、位置參數、關鍵字參數以及默認值的使用方法。掌握這些核心概念后,你將能夠:

  • 編寫更清晰、可維護的函數。
  • 靈活處理不同調用場景。
  • 避免常見陷阱(如可變默認值)。

后續將繼續探討 Python 函數的高級特性,如可變參數、匿名函數(lambda)等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89215.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32 驅動 ADS1015 單端 差分 多通道模式 ADC 轉換

文章目錄 一、ADS1015簡介二、引腳功能三、寄存器介紹1.Conversion Register 轉化數據存放寄存器2.Config Register 配置寄存器 四、IIC時序1.寫寄存器2.讀寄存器 五、程序六、實驗現象1.單端模式2.差分模式3.偽多通道模式 一、ADS1015簡介 ADS1015 是一款由德州儀器&#xff…

RabbitMQ 消費冪等性與消息重放實現

一、冪等性實現 1.1 什么是冪等性? 冪等性是指同一條消息無論被消費多少次,業務結果都只生效一次,防止重復扣款、重復發貨等問題。 RabbitMQ 的投遞模式是“至少一次交付”(at-least-once delivery),如果消費者處理失敗或者沒有及…

【HarmonyOS 5】鴻蒙TEE(可信執行環境)詳解

【HarmonyOS 5】鴻蒙TEE(可信執行環境)詳解 一、TEE是什么? 1、TEE的定義: 可信執行環境(Trusted Execution Environment),簡稱TEE,是存在于智能手機、平板或任意移動設備主處理器…

算法: 冒泡排序

冒泡排序是一種簡單的排序算法,通過相鄰元素的比較和交換,使較大的元素逐漸"浮"到數組末尾。 時間復雜度:最佳 O(n) | 平均 O(n) | 最差 O(n) 空間復雜度:O(1) 穩定性:穩定 應用場景/前提條件 適用于小規模數據對幾乎已排序的數據效率較高…

基于SpringBoot的家電銷售展示平臺

源碼編號:S567 源碼名稱:基于SpringBoot的家電銷售展示平臺 用戶類型:雙角色,用戶、管理員 數據庫表數量:14 張表 主要技術:Java、Vue、ElementUl 、SpringBoot、Maven 運行環境:Windows/M…

java+vue+SpringBoo智慧旅游系統(程序+數據庫+報告+部署教程+答辯指導)

源代碼數據庫LW文檔(1萬字以上)開題報告答辯稿ppt部署教程代碼講解代碼時間修改工具 技術實現 開發語言:后端:Java 前端:vue框架:springboot數據庫:mysql 開發工具 JDK版本:JDK1.…

Docker 入門教程(三):鏡像操作命令

文章目錄 🐳 Docker 入門教程(三):鏡像操作命令獲取鏡像:docker pull查看鏡像:docker images刪除鏡像:docker rmi搜索鏡像:docker search鏡像打標簽:docker tag鏡像詳情與…

如何修改discuz文章標題字數限制 修改成255

在 Discuz! X3.5 中,文章(主題)標題字數的限制可以通過修改數據庫結構以及后臺配置來實現,以下是完整的修改方法,將標題長度限制改為 255 個字符: ? 一、修改數據庫字段長度 Discuz 默認標題字段是 subje…

基于BP神經網絡的26個英文字母識別

本課題旨在設計并實現一個基于BP(反向傳播)神經網絡的英文字母識別系統,實現對手寫或打印的26個英文字母(A-Z)的自動分類識別。項目首先對字母圖像進行預處理(如灰度化、歸一化、二值化和特征提取&#xff…

系統架構設計師論文分享-論云原生技術的應用

我的軟考歷程 摘要 2023年2月,我所在的公司做了開發紗線MES系統的決定,該系統為國內紗線工廠提供SAAS服務,旨在提高紗線工廠的智能化和數字化水平。我在該項目中被任命為系統架構設計師,全面掌管該項目的架構設計工作。該項目涉…

重置 MySQL root 密碼

引言 在linux可能存在安裝mysql安裝失敗,一直不出現默認密碼 /usr/local/mysql/mysql-8.0.26/bin/mysqld --defaults-file/etc/my.cnf --usermysql --basedir/usr/local/mysql/mysql-8.0.26 --datadir/usr/local/mysql/mysql-8.0.26/data --lower-case-table-name…

面試八股---HTML

面試八股 1、HTML 1.1 src和href的區別 src 用于替換當前元素,href 用于在當前文檔和引用資源之間確立聯系。 核心區別在于 href 關聯的資源(主要是 CSS)是用于描述頁面外觀的,瀏覽器可以先生成內容再應用樣式,因此…

氣候智能體:AI如何重構人類應對氣候危機的決策體系?

前言 前些天發現了一個巨牛的人工智能免費學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站 《氣候智能體:AI如何重構人類應對氣候危機的決策體系?》 展開全景式論述。文章結合2025年最新技術突破與…

UITableView的位置向下偏移, contentInsetAdjustmentBehavior使用詳情

一.contentInsetAdjustmentBehavior 作用: 在iOS 11及以后,蘋果引入了安全區域(Safe Area)的概念,當UITableView的frame超出了安全區域,系統會自定調整SafeAreaInsets的值,它可以自動調整內容的內邊距,使得內容不會被導航欄遮擋。…

騰訊云RayData全新推出“行業解決方案模板”,一鍵快捷制作3D數據可視化作品

點擊藍字? 關注我們 本文共計958字 預計閱讀時長3分鐘 騰訊云RayData Plus是一款專注于高視效的3D數據可視化的實時渲染工具。 功能全面:提供了三維、二維、動畫、數據、交互邏輯等各類能力; 零代碼制作:靈活的節點式創作,即便沒…

深度解析基于貝葉斯的垃圾郵件分類

貝葉斯垃圾郵件分類的核心邏輯是基于貝葉斯定理,利用郵件中的特征(通常是單詞)來計算該郵件屬于“垃圾郵件”或“非垃圾郵件”的概率,并根據概率大小進行分類。它是一種樸素貝葉斯分類器,因其假設特征(單詞…

WPF 3D 開發全攻略:實現3D模型創建、旋轉、平移、縮放

🎮 WPF 3D 入門實戰:從零打造一個可交互的立方體模型 標題: 🚀《WPF 3D 開發全攻略:實現旋轉、平移、縮放與法線顯示》 💡 引言 在現代圖形應用中,3D 可視化已經成為不可或缺的一部分。WPF 提供…

Ruby 安裝使用教程

一、Ruby 簡介 Ruby 是一種簡單快捷的面向對象腳本語言,以優雅、簡潔、易讀著稱。它常被用于 Web 開發(如 Ruby on Rails 框架)、自動化腳本、DevOps、命令行工具等領域。 二、Ruby 安裝教程 2.1 支持平臺 Ruby 支持跨平臺運行&#xff0c…

python | numpy小記(五):理解 NumPy 中的 `np.arccos`:反余弦函數

python | numpy小記(五):理解 NumPy 中的 np.arccos:反余弦函數 一、函數簽名與核心參數二、數學定義與取值范圍三、基礎使用示例四、與 Python 內建 math.acos 的對比五、常見問題與注意事項六、典型應用場景1. 三維向量夾角計算…

華為云Flexus+DeepSeek征文 | 華為云ModelArts與Reor的完美結合:創建高效本地AI筆記環境

華為云FlexusDeepSeek征文 | 華為云ModelArts與Reor的完美結合:創建高效本地AI筆記環境 引言一、ModelArts Studio平臺介紹華為云ModelArts Studio簡介ModelArts Studio主要特點 二、Reor介紹Reor簡介Reor主要特點 三、安裝Reor工具下載Reor軟件安裝Reor工具 四、開…