python:動態參數*args

動態參數

  顧名思義,動態參數就是傳入的參數的個數是動態的,可以是1個、2個到任意個,還可以是0個。在不需要的時候,你完全可以忽略動態函數,不用給它傳遞任何值。

Python的動態參數有兩種,分別是*args**kwargs,這里面的關鍵是一個和兩個星號的區別,而不是argskwargs在名字上的區別,實際上你可以使用*any**whatever的方式。但就如self一樣,默認大家都使用*args**kwargs

注意:動態參數,必須放在所有的位置參數和默認參數后面!

def func(name, age, sex='male', *args, **kwargs):pass

*args

一個星號表示接收任意個參數。調用時,會將實際參數打包成一個元組傳入形式參數。如果參數是個列表,會將整個列表當做一個參數傳入。例如:

?

def func(*args):"""*表示接收任意個數量的參數,調用時會將實際參數打包為一個元組傳入實參:param args::return:"""print argsfor i in args:print ifunc({'name': 'kobe'}, 123, 'hello', ['a', 'b', 'c'])

?

運行結果:

({'name': 'kobe'}, 123, 'hello', ['a', 'b', 'c'])
{'name': 'kobe'}
123
hello
['a', 'b', 'c']

可以看到,先打印了args參數,是一個元組,再分別打印了傳入的每個參數。

有時候我們傳入一個列表,本意是希望將列表中的所有元素都當做參數傳遞進去,這里直接將['a', 'b', 'c']看做一個整體了,怎么辦?

其實只需要在調用時前面加一個*號就能實現將列表中的每個元素傳遞進去了。

其實不光列表,任何序列類型數據對象,比如字符串、元組都可以通過這種方式將內部元素逐一作為參數,傳遞給函數。而字典,則會將所有的key逐一傳遞進去。

def func(*args):"""*表示接收任意個數量的參數,調用時會將實際參數打包為一個元組傳入實參:param args::return:"""for i in args:print ifunc(*['a', 'b', 'c'])

輸出結果:

a
b
c

特別的,調用時只能有一個參數前添加*號,且必須放在最后面

def func(*args):"""*表示接收任意個數量的參數,調用時會將實際參數打包為一個元組傳入實參:param args::return:"""for i in args:print ifunc(123, 'hello', ['a', 'b', 'c'], *{'name': 'kobe', 'age': 41})

輸出:將字典的key值作為參數傳入了

123
hello
['a', 'b', 'c']
age
name

?

轉載于:https://www.cnblogs.com/gcgc/p/11426478.html

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

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

相關文章

3.5. Ticket

過程 3.4. Ticket 使用方法 New Ticket 新建Ticket, Ticket 可以理解為任務。 將Ticket 分配給團隊成員 受到Ticket后,一定要更改Ticket 為 accept , 這時在View Tickets 中將會看到該Ticket已經分配, 編碼過程 這里有一個特別的規定&…

Python操作Mysql實例代碼教程在線版(查詢手冊)_python

實例1、取得MYSQL的版本在windows環境下安裝mysql模塊用于python開發MySQL-python Windows下EXE安裝文件下載 復制代碼 代碼如下:# -*- coding: UTF-8 -*- #安裝MYSQL DB for pythonimport MySQLdb as mdb con None try: #連接mysql的方法:connect(ip,user,pass…

批判性思維_為什么批判性思維技能對數據科學家至關重要

批判性思維As Alexander Pope said, to err is human. By that metric, who is more human than us data scientists? We devise wrong hypotheses constantly and then spend time working on them just to find out how wrong we were.正如亞歷山大波普(Alexander Pope)所說…

leetcode 1143. 最長公共子序列(dp)

給定兩個字符串 text1 和 text2,返回這兩個字符串的最長 公共子序列 的長度。如果不存在 公共子序列 ,返回 0 。 一個字符串的 子序列 是指這樣一個新的字符串:它是由原字符串在不改變字符的相對順序的情況下刪除某些字符(也可以…

【Spark】SparkStreaming-Kafka-Redis-集成-基礎參考資料

SparkStreaming-Kafka-Redis-集成-基礎參考資料 Overview - Spark 2.2.0 DocumentationSpark Streaming Kafka Integration Guide - Spark 2.2.0 DocumentationSpark Streaming Kafka Integration Guide (Kafka broker version 0.8.2.1 or higher) - Spark 2.2.0 Documentat…

Manjaro 17 搭建 redis 4.0.1 集群服務

安裝Redis在Linux環境中 這里我們用的是manjaro一個小眾一些的發行版 我選用的是manjaro 17 KDE 如果你已經安裝好了manjaro 那么你需要準備一個redis.tar.gz包 這里我選用的是截至目前最新的redis 4.0.1版本 我們可以在官網進行下載 https://redis.io/download選擇Stable &…

了解如何使用Flutter構建iOS和Android應用

Learn Flutter in this full course from Nick Manning (of fluttercrashcourse.com). Flutter is Google’s multi-platform mobile development framework used to create apps for Android and iOS using the Dart programming language. 可以從fluttercrashcourse.com的Nic…

leetcode 781. 森林中的兔子(hashmap)

森林中,每個兔子都有顏色。其中一些兔子(可能是全部)告訴你還有多少其他的兔子和自己有相同的顏色。我們將這些回答放在 answers 數組里。 返回森林中兔子的最少數量。 示例: 輸入: answers [1, 1, 2] 輸出: 5 解釋: 兩只回答了 “1” 的兔…

快速排序簡便記_建立和測試股票交易策略的快速簡便方法

快速排序簡便記Note from Towards Data Science’s editors: While we allow independent authors to publish articles in accordance with our rules and guidelines, we do not endorse each author’s contribution. You should not rely on an author’s works without se…

Java學習第1天:序言,基礎及配置tomcat

所謂是福不是禍,是禍躲不過,到底還是回到java的陣地上來。既然它這么熱,那就學學它,現在這件事已經提上議事日程,也已經開始。 今天做的事: 泛泛的翻了幾本書,敲了一些練習代碼,比如…

robot:List變量的使用注意點

創建list類型變量,兩種方式,建議使用Create List關鍵字 使用該列表變量時需要變為${}方式,切記切記! 轉載于:https://www.cnblogs.com/gcgc/p/11429482.html

python基礎教程(十一)

迭代器 本節進行迭代器的討論。只討論一個特殊方法---- __iter__ ,這個方法是迭代器規則的基礎。 迭代器規則 迭代的意思是重復做一些事很多次---就像在循環中做的那樣。__iter__ 方法返回一個迭代器,所謂迭代器就是具有next方法的對象,在調…

編程需要數學知識嗎_編程需要了解數學嗎?

編程需要數學知識嗎Does programming require knowing math? Not necessarily. 編程需要了解數學嗎? 不必要。 When I say that, Im mostly talking about Web Development, not working with graphics or specific applications that require advanced math. 當我…

美劇迷失_迷失(機器)翻譯

美劇迷失Machine translation doesn’t generate as much excitement as other emerging areas in NLP these days, in part because consumer-facing services like Google Translate have been around since April 2006.如今,機器翻譯并沒有像其他NLP新興領域那樣…

mysql 1449 : The user specified as a definer ('usertest'@'%') does not exist 解決方法 (grant 授予權限)...

從服務器上遷移數據庫到本地localhost 執行 函數 時報錯, mysql 1449 : The user specified as a definer (usertest%) does not exist 經查,是權限問題(其中usertest是服務器上數據庫的登錄名),解決辦法: 授權給 u…

初識數據結構與算法

1、什么是數據結構? a、數據結構是一門研究非數值計算的程序設計問題中的操作對象,以及它們之間的關系和操作等相關問題的學科。 b、數據結構是計算機存儲、組織數據的方式,數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。通常…

產品經理思考

1.分析QQ與微信的區別,包含其中存在的問題,并給出解決方案。 2.如果你設計一款基于音樂的高品質內容的社交軟件,給說出這么設計的原因。 3.請說出一款APP的的看法,指出其中不合理的地方,并說明原因(APP如果…

shopify 開發_播客第57集:從Shopify的作家到開發人員,與Adam Hollett一起

shopify 開發On this weeks episode of the freeCodeCamp podcast, Quincy interviews Adam Hollett. Hes a software developer at Shopify in Ottawa, Canada.在本周的freeCodeCamp播客節目中,Quincy采訪了Adam Hollett。 他是加拿大渥太華Shopify的軟件開發人員。…

機器學習中決策樹的隨機森林_決策樹和隨機森林在機器學習中的使用

機器學習中決策樹的隨機森林機器學習 (Machine Learning) Machine learning is an application of artificial intelligence that provides systems the ability to automatically learn and improve from experience without being explicitly programmed. The 3 main categor…

pycharm 快捷鍵

編輯: ctrl D   快速復制粘貼一行 ctrl E   快速刪除一行 ctrl Z   撤銷上一步命令或輸入 end  快速跳到行末 shift enter  快速換行(尤其適用于光標不在行末時) ctrl F  查找 ctrl R  替換 轉載于:https://www.cnblogs.com/Chris-0…