Python之參數星號(*)使用筆記

背景

在學習python時發現方法調用和方法定義會經常發現有帶星號的標記,為了弄明白是怎么使用的。特此做個筆記。

一、參數符號對比速查表

符號類使用場景作用描述示例
無符號函數定義/調用普通位置參數或關鍵字參數.def func(a, b)
*函數定義收集多余位置參數為元組.def func(*args)
*函數調用解包可迭代對象為位置參數.func(*[1,2])
**函數定義收集多余關鍵字參數為字典def func(**kwargs)
**函數調用解包字典為關鍵字參數func(**{‘x’:1})
單獨*參數分隔強制后續參數必須用關鍵字指定def func(a, *, b)

二、核心區別詳解

1. 無符號參數(基礎參數)

# 位置參數示例
def add(a, b):return a + badd(3, 5)        # ? 正確:位置傳參
add(b=5, a=3)    # ? 正確:關鍵字傳參

2. 單星號(*)參數

定義時使用(收集位置參數)

def log(*values):print(type(values))  # <class 'tuple'>print(values)log(1, 'A', True)  # 輸出: (1, 'A', True)

調用時使用(解包可迭代對象)

def plot(x, y):print(f"繪制點({x},{y})")points = [5, 8]
plot(*points)  # 等效于 plot(5, 8)

3. 雙星號(**)參數

定義時使用(收集關鍵字參數)

def user_info(**details):print(type(details))  # <class 'dict'>print(details)user_info(name='Alice', age=25)  # 輸出: {'name': 'Alice', 'age': 25}

調用時使用(解包字典)

def create_profile(name, age):print(f"{name} | {age}歲")data = {'name': 'Bob', 'age': 30}
create_profile(**data)  # 等效于 create_profile(name='Bob', age=30)

4. 強制關鍵字參數(單獨*)

def register(username, *, email, phone):print(f"注冊用戶: {username}, 郵箱: {email}, 電話: {phone}")register("wyz", email="wyz@example.com", phone="13800138000")  # ? 正確
register("bob456", "bob@test.com", "12345678911")  # ? 報錯:email和phone必須用關鍵字參數

三、混合使用案例

def complex_example(a, b=0, *args, c, d=10, **kwargs):print(f"""固定參數: a={a}, b={b}可變位置參數: args={args}強制關鍵字參數: c={c}, d={d}可變關鍵字參數: kwargs={kwargs}""")complex_example(1, 2, 3, 4, c=5, e=20, f=30)
# 輸出:
# 固定參數: a=1, b=2
# 可變位置參數: args=(3, 4)
# 強制關鍵字參數: c=5, d=10
# 可變關鍵字參數: kwargs={'e': 20, 'f': 30}

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

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

相關文章

使用haproxy實現MySQL服務器負載均衡

一、環境準備 主機名IP地址備注openEuler-1192.168.121.11mysql-server-1openEuler-2192.168.121.12mysql-server-2openEuler-3192.168.121.13clientRocky-1192.168.121.51haproxy 二、mysql-server配置 [rootopenEuler-1 ~]# yum install -y mariadb-server [rootopenEuler…

Python與Web3.py庫:構建去中心化應用的未來

Python與Web3.py庫&#xff1a;構建去中心化應用的未來 在區塊鏈的世界里&#xff0c;“去中心化”是最核心的理念之一&#xff0c;它賦予了用戶更多的控制權和自由&#xff0c;消除了傳統中心化系統中的單點故障和信任問題。而在這場技術革命中&#xff0c;Web3.0無疑是最受矚…

對“預訓練”的理解

預訓練有什么用 傳統的機器學習是偏數學的&#xff0c;對數據的量不做過多要求&#xff0c;而深度學習的項目通常是有大量的數據可供使用。 在平常的任務或者項目中&#xff0c;我們可能并沒有大量數據&#xff0c;只有少量數據&#xff0c;在這時我們就可以通過“借用”有大…

VMware Ubuntu 共享目錄

在VMware中掛載Ubuntu共享目錄需要以下步驟&#xff0c;分為設置共享文件夾和在Ubuntu中掛載兩部分&#xff1a; 一、VMware 設置共享文件夾 關閉Ubuntu虛擬機 在配置前&#xff0c;建議先關閉虛擬機&#xff08;若已運行需關閉&#xff0c;部分VMware版本支持熱添加&#xff0…

AF3 crop_chains函數解讀

AlphaFold3 feature_processing_multimer模塊的crop_chains函數的功能是對多條鏈的蛋白質結構預測任務中的MSA(多序列比對)特征和模板特征進行裁剪(cropping)。裁剪的目的是為了控制輸入模型的MSA序列數量和模板數量,以適應模型的輸入限制或優化計算效率。 源代碼: def…

Java基礎-數組,集合創建方式

Java 中 new 關鍵字的作用 在 Java 中&#xff0c;new 關鍵字用于 在堆內存中分配空間 并創建對象。 數組 和 集合 在 Java 中都是對象&#xff0c;因此必須使用 new 來創建實例。Java 和 C 之間的主要區別在于 內存管理 和 對象的創建方式。 Java 與 C 中數組 & 集合的創…

LeeCode題庫第三十九題

39.組合總和 項目場景&#xff1a; 給你一個 無重復元素 的整數數組 candidates 和一個目標整數 target &#xff0c;找出 candidates 中可以使數字和為目標數 target 的 所有 不同組合 &#xff0c;并以列表形式返回。你可以按 任意順序 返回這些組合。 candidates 中的 同…

大模型應用案例 | 大模型+金融運維,擎創攜手某證券創新運維能力新范式

一、當大模型遇上金融運維&#xff1a;一場讓告警處理“脫胎換骨”的變革 2022年底&#xff0c;ChatGPT的橫空出世讓AI技術徹底出圈&#xff1b;短短兩年后&#xff0c;大模型已悄然潛入金融行業的“心臟地帶”——運維系統。面對指數級暴增的告警信息、碎片化的處理流程&#…

【MongoDB】在Windows11下安裝與使用

官網下載鏈接&#xff1a;Download MongoDB Community Server 官方參考文檔&#xff1a;https://www.mongodb.com/zh-cn/docs/manual/tutorial/install-mongodb-on-windows/#std-label-install-mdb-community-windows 選擇custom類型&#xff0c;其他默認 注意&#xff0c;此選…

阿里云輕量級服務器通過寶塔安裝PgVector要點

設置環境變量&#xff1a; export PG_HOME/www/server/pgsql export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/www/server/pgsql/lib export PG_CONFIG/www/server/pgsql/bin/pg_config export PGDATA/www/server/pgsql/data PATH$PATH:$HOME/.local/bin:$HOME/bin:$PG_HOME/bin ali…

OpenSSL 基礎使用流程

理解 OpenSSL 的基礎使用流程是學習如何進行安全通信的關鍵&#xff0c;特別是在實現 SSL/TLS 連接時。以下是 OpenSSL 基礎使用流程的一個簡要總結&#xff0c;并附上一個簡單的示例代碼&#xff0c;幫助你理解如何通過 OpenSSL 建立一個基本的安全通信連接。 OpenSSL 基礎使…

什么是最終一致性,它對后端系統的意義是什么

最終一致性(Eventual Consistency)是分布式系統中的一種一致性模型。與傳統的強一致性模型不同,最終一致性并不要求系統在任何時刻都保持一致,而是保證在足夠的時間后,所有節點的數據最終會達到一致的狀態。換句話說,系統允許短時間內出現數據的不一致性,但最終會通過某…

SQL命令詳解之增刪改數據

目錄 簡介 1 添加數據 1.1 基礎語法 1.2 SQL 練習 2 修改數據 2.1 基礎語法 2.2 SQL 練習 ?3 刪除數據 3.1 基礎語法 3.2 SQL 練習 總結 簡介 在數據庫操作中&#xff0c;增、刪、改是最基礎的操作&#xff0c;它們通常對應著SQL中的INSERT、DELETE和UPDATE命令。…

std::allocator_traits 能做但 std::allocator 不能的事情

&#x1f31f; std::allocator_traits 能做但 std::allocator 不能的事情 1?? 適配自定義分配器 假設你要實現一個內存池 MyAllocator&#xff0c;而 STL 容器默認使用的是 std::allocator。 如果你希望 STL 容器可以使用你的 MyAllocator&#xff0c;你 不能直接用 std::a…

QT——c++界面編程庫

非界面編程 QT編譯的時候&#xff0c;依賴于 .pro 配置文件&#xff1a; SOURCES: 所有需要參與編譯的 .cpp 源文件 HEADERS:所有需要參與編譯的.h 頭文件 QT&#xff1a;所有需要參與編譯的 QT函數庫 .pro文件一旦修改&#xff0c;注意需要鍵盤按 ctrls 才能加載最新的配置文…

基于專利合作地址匹配的數據構建區域協同矩陣

文章目錄 地區地址提取完成的處理代碼 在專利合作申請表中&#xff0c;有多家公司合作申請。在專利權人地址中&#xff0c; 有多個公司的地址信息。故想利用這里多個地址。想用這里的地址來代表區域之間的專利合作情況代表區域之間的協同、協作情況。 下圖是專利合作表的一部分…

汽車小助手智能體

汽車小助手&#xff1a;智能驅動汽車服務新體驗 鏈接&#xff1a;文心智能體平臺AgentBuilder | 想象即現實 文心智能體平臺AgentBuilder&#xff0c;是百度推出的基于文心大模型的智能體平臺&#xff0c;支持廣大開發者根據自身行業領域、應用場景&#xff0c;選取不同類型的…

各種傳參形式

一、QueryString 前端請求&#xff1a;http://localhost:8080/test/user/find?id26&namezhangsan 后端接收&#xff1a; 1.參數接收&#xff1a; RequestMapping("/find") public void find(String id,String name){... }2.對象接收&#xff1a; RequestMa…

【vue-echarts】——03.配置項---tooltip

文章目錄 一、tooltip提示框組件二、顯示結果一、tooltip提示框組件 提示框組件,用于配置鼠標滑過或點擊圖表時的顯示框 代碼如下 Demo3View.vue <template><div class="about">

VSCode輕松調試運行.Net 8.0 Web API項目

1.背景 我一直都是用VS來開發.NetCore項目的&#xff0c;用的比較順手&#xff0c;也習慣了。看其他技術文章有介紹VS Code更輕量&#xff0c;更方便。所以我專門花時間來使用VS Code&#xff0c;看看它是如何調試代碼、如何運行.Net 8.0 WebAPI項目。這篇文章是一個記錄的過程…