【python】函數的參數(實參,形參,*args和**kwargs)

一、實參和形參

實參: 函數執行的時候給函數傳遞的具體的值
形參: 在函數聲明時編寫的變量
函數執行時每個形參都要有值

# a,b為形參
def add(a, b):print(a + b)
# 3,4為實參    
add(3, 4)

二、實參

1.位置參數

按位置給形參傳遞數據

def add(a, b):print(a + b)
# 3,4為位置參數   
add(3, 4)

2.關鍵字參數

按形參的名字傳遞數據

def add(a, b, c):print(a + b - c)
# 關鍵字參數
add(c=10, a=5, b=4)

3.混合參數

位置參數與關鍵字參數,混合使用
注意順序: 先位置參數,后關鍵字參數

def add(a, b, c):print(a + b - c)
add(10, c=5, b=4)

二、形參

1. 位置參數

def add(a, b, c):print(a + b - c)

2. 默認值參數

調用函數時默認值參數可以不給具體的值,直接使用默認值

# 調用函數時可以只給a,b傳值,c默認為100
def add(a, b, c = 100):print(a + b - c)

3. 動態傳參(*args和**kwargs)

*:接收任意個位置參數,自動打包成元組
**:接收任意個關鍵字參數,自動打包成字典
*args和**args只是通常的命名習慣,也可以命名成其他的

3.1 *

def chi(*food):print(food)
chi("米飯", "蘋果", "牛肉", "冰淇淋")
# 打印結果為:('米飯', '蘋果', '牛肉', '冰淇淋')

3.2. **

def chi(**food):print(food)
chi(main_food="米飯", fruit="蘋果", meat="牛肉")
# 打印結果為:
# {'main_food': '米飯', 'fruit': '蘋果', 'meat': '牛肉'}

4. 形參的使用順序(重要)

正確使用順序:位置參數 > *args > 默認值參數 > **kwargs
例如:

def func(a, *args, b=10, **kwargs):print(a, args, b, kwargs)

三、可以接受任意參數的函數

# *args接受所有的位置參數,**kwargs接受所有的關鍵字參數
def func(*args, **kwargs):print(args)print(kwargs)

*和**的打散功能(重要)

在形參: 聚合,*把位置參數聚合成元組,**把關鍵字參數聚合成字典
在實參: 打散,*把可迭代對象轉化成位置參數,**把字典轉化成關鍵字參數

# 例如:列表的打散
def func(*args):print(args)
lst = ["a", "b", "c"]
# 一個個傳遞參數
func(lst[0], lst[1], lst[2])
# 打散直接傳遞
func(*lst)
# 例如:字典的打散
def func(**kwargs):print(kwargs)dic = {"a": 1, "b": 2, "c": 3}
# 一個個傳遞參數
func(a=dic["a"], b=dic["b"], c=dic["c"])
# 打散直接傳遞
func(**dic)

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

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

相關文章

使用C語言操作kafka ---- librdkafka

1 安裝librdkafka git clone https://github.com/edenhill/librdkafka.git cd librdkafka git checkout v1.7.0 ./configure make sudo make install sudo ldconfig 在librdkafka的examples目錄下會有示例程序。比如consumer的啟動需要下列參數 ./consumer <broker> &…

一對一聊天程序

package untitled1.src;import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*; import java.net.*;public class MyServer extends JFrame{private ServerSocket server; // 服務器套接字pri…

【漏洞復現】華脈智聯指揮調度平臺/xml_edit/fileread.php文件讀取漏洞

Nx01 產品簡介 深圳市華脈智聯科技有限公司&#xff0c;融合通信系統將公網集群系統、專網寬帶集群系統、不同制式、不同頻段的短波/超短波對講、模擬/數字集群系統、辦公電話系統、廣播系統、集群單兵視頻、視頻監控系統、視頻會議系統等融為一體&#xff0c;集成了專業的有線…

第一課【習題】HarmonyOS應用/元服務上架

元服務發布的國家與地區僅限于“中國大陸” 編譯打包的軟件包存放在項目目錄build > outputs > default下 創建應用時&#xff0c;應用包名需要和app.json5或者config.json文件中哪個字段保持一致&#xff1f; 發布應用時需要創建證書&#xff0c;證書類型選擇什么…

web前端實現LED功能、液晶顯示時間、數字

MENU 效果演示html部分JavaScript部分css部分 效果演示 html部分 <div id"app"><!-- 頁面 --><div class"time-box"><!-- 時 --><div class"house-box"><bit-component :num"houseTem"></bit…

編譯器緩存

2023年12月6日&#xff0c;周三晚上 使用編譯器緩存有什么用 編譯器緩存是一種用于加速編譯過程的工具&#xff0c;它可以緩存已編譯的對象文件和依賴關系&#xff0c;以便在后續構建中重復使用。使用編譯器緩存可以帶來以下幾個好處&#xff1a; 加快編譯速度&#xff1a;編譯…

TS型變與對象類型進階

子類型&#xff1a;給定兩個類型A和B&#xff0c;假設B是A的子類型&#xff0c;那么在需要A的地方都可以放心使用B。計作 A <: B &#xff08;A是B的子類型&#xff09;。 超類型正好與子類型相反。A >: B &#xff08;A是B的超類型&#xff09;。 1 TS 類型 可賦值性…

使用cmake構建Qt6.6的qt quick項目,添加應用程序圖標的方法

最近&#xff0c;在學習qt的過程中&#xff0c;遇到了一個難題&#xff0c;不知道如何給應用程序添加圖標&#xff0c;按照網上的方法也沒有成功&#xff0c;后來終于自己摸索出了一個方法。 1、準備一張圖片作為圖標&#xff0c;保存到工程目錄下面&#xff0c;如logo.ico。 …

Qt 編譯fcitx-qt5 插件支持中文輸入法

前言 在Linux系統上會遇到Qt開發的程序無法輸入中文的情況&#xff0c;原因就是因為輸入法框架是采用的fcitx&#xff0c;而不是ibus&#xff0c;Qt默認只支持ibus輸入法框架。在Qt/5.15.2/gcc_64/plugins/platforminputcontexts/路徑下可以看到&#xff0c;只有libibusplatfo…

引入JavaScript文件的5種方式

在HTML文件中&#xff0c;可以使用以下5種方式引入JavaScript文件&#xff1a; 1.內聯方式&#xff08;Inline&#xff09;&#xff1a; 在HTML的<script>標簽中直接編寫JavaScript代碼。 示例&#xff1a; <script>// JavaScript代碼 </script>2.外部文件…

Python Selenium3 簡單操作進行百度搜索

當前環境&#xff1a;Win10 Python3.7 selenium3.141.0&#xff0c;urllib31.26.2 from selenium import webdriver import timeif __name__ __main__:# Chrome 路徑CHROME_PATH rC:\Program Files (x86)\65.0.3312.0\chrome-win32\chrome.exe# ChromeDriver 路徑CHROMEDR…

mybatis的快速入門以及spring boot整合mybatis(二)

需要用到的SQL腳本&#xff1a; CREATE TABLE dept (id int unsigned PRIMARY KEY AUTO_INCREMENT COMMENT ID, 主鍵,name varchar(10) NOT NULL UNIQUE COMMENT 部門名稱,create_time datetime DEFAULT NULL COMMENT 創建時間,update_time datetime DEFAULT NULL COMMENT 修改…

極智芯 | 解讀國產AI算力 靈汐產品矩陣

歡迎關注我的公眾號 [極智視界],獲取我的更多經驗分享 大家好,我是極智視界,本文分享一下 解讀國產AI算力 靈汐產品矩陣。 邀您加入我的知識星球「極智視界」,星球內有超多好玩的項目實戰源碼和資源下載,鏈接:https://t.zsxq.com/0aiNxERDq [系列聲明:最近寫了十余篇 &…

低多邊形建筑3D模型紋理貼圖

在線工具推薦&#xff1a; 3D數字孿生場景編輯器 - GLTF/GLB材質紋理編輯器 - 3D模型在線轉換 - Three.js AI自動紋理開發包 - YOLO 虛幻合成數據生成器 - 三維模型預覽圖生成器 - 3D模型語義搜索引擎 當談到游戲角色的3D模型風格時&#xff0c;有幾種不同的風格&#xf…

基于SSM的鞍山職業技術學院圖書借閱管理系統

文章目錄 項目介紹主要功能截圖:部分代碼展示設計總結項目獲取方式?? 作者主頁:超級無敵暴龍戰士塔塔開 ?? 簡介:Java領域優質創作者??、 簡歷模板、學習資料、面試題庫【關注我,都給你】 ??文末獲取源碼聯系?? 項目介紹 基于SSM的鞍山職業技術學院圖書借閱管理…

樹莓派CSI攝像頭在新系統(23年12月)中的不用設置了,沒有開關,也沒有raspistill

網上都是老信息&#xff0c;用的raspistill命令&#xff0c;至少新系統沒有這個東西了&#xff0c;也不會在sudo raspi-config里面也沒有攝像頭的開關了。 ls /dev/video* 能看到攝像頭video0&#xff0c;但是vcgencmd get_camera supported0&#xff0c; detected0&#xff0…

【python】閉包和裝飾器

前置知識&#xff1a; 函數的本質就是變量名可以把函數作為參數傳遞&#xff0c;例如&#xff1a; def func():print("我是func")# 接收的fn是個函數 def handle(fn): # 調用函數fn()handle(func)可以把函數作為返回值返回&#xff0c;例如 def func():def func2(…

CPU的三大調度

計算機系統中的調度可以分為不同層次&#xff0c;包括作業調度、內存調度和進程調度。這三種調度分別負責管理和優化計算機系統中不同層次的資源分配和執行順序。 高級調度&#xff1a;作業調度&#xff08;Job Scheduling&#xff09;&#xff1a; 作業調度是指對提交到計算…

了解c++11中的新增

一&#xff0c;統一的初始化列表 在引入c11后&#xff0c;我們得出計劃都可以用初始化列表進行初始化。 C11 擴大了用大括號括起的列表 ( 初始化列表 ) 的使用范圍&#xff0c;使其可用于所有的內置類型和用戶自 定義的類型&#xff0c; 使用初始化列表時&#xff0c;可添加等…

Vue學習計劃-Vue2--VueCLi(二)vuecli腳手架創建的項目內部主要文件分析

1. 文件分析 1. 補充&#xff1a; 什么叫單文件組件&#xff1f; 一個文件中只有一個組件 vue-cli創建的項目中&#xff0c;.vue的文件都是單文件組件&#xff0c;例如App.vue 2. 進入分析 1. package.json: 項目依賴配置文件&#xff1a; 如圖&#xff0c;我們說主要的屬性…