python星號(*)和雙星號(**)?函數(shù)動態(tài)參數(shù)匹配及解包操作方法
1.乘法和冪運算符
● 單個 * 用于乘法運算
● 兩個 ** 表示冪運算
>>> 2*3 >>> 6 >>> 2**3 >>> 8
2.函數(shù)接收數(shù)量不固定的入?yún)?/h2>
在定義函數(shù)時,我們可以定義一個以一個或兩個星號為前綴的參數(shù),以捕獲不限制數(shù)量的參數(shù)輸入??偨Y(jié)如下:
● 以 一個 * 為前綴的參數(shù)可以將任意數(shù)量的參數(shù)以元組形式傳入
● 以兩個 ** 為前綴的參數(shù)可以將任意數(shù)量的參數(shù)以字典形式傳入
3.限制函數(shù)入?yún)H以關(guān)鍵字形式輸入
def genius(age, *, first_name, last_name):
print(first_name, last_name, 'is', age)
genius(28, first_name='Li', last_name='Bai')
# Li Bai is 28上述代碼采用了星號* 限制了星號之后的參數(shù)必須采用關(guān)鍵字形式來調(diào)用上述函數(shù)。
4. 可迭代對象解包操作
使用星號* 來解包可迭代對象。
A = [1, 2, 3]
B = (4, 5, 6)
C = {7, 8, 9}
L = [*A, *B, *C]
print(L)
# [1, 2, 3, 4, 5, 6, 8, 9, 7]如果我們利用一個*作為dict 的前綴,它的key 將被解包;如果我們使用雙星號** 作為前綴,其value 將被解包;此時我們必須顯示使用key 來接收解包后的value 。
D = {'first': 1, 'second': 2, 'third': 3}
print(*D)
# first second third
# print(**D)
# TypeError: 'first' is an invalid keyword argument for print()
print('{first},{second},{third}'.format(**D))
# 1,2,35.擴(kuò)展可迭代對象解包
解包的語法。
L = [1, 2, 3, 4, 5, 6, 7, 8] a, *b = L print(a) # 1 print(b) # [2, 3, 4, 5, 6, 7, 8]
到此這篇關(guān)于python星號(*)和雙星號(**) 函數(shù)動態(tài)參數(shù)匹配及解包操作的文章就介紹到這了,更多相關(guān)python星號(*)和雙星號(**)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Python中數(shù)據(jù)庫管理模塊shelve和dbm的應(yīng)用
作為常用的 python 自帶數(shù)據(jù)庫管理模塊,shelve 和 dbm 都是非常方便的對象持久化存儲和檢索工具,本文將從用法、優(yōu)勢以及不同點等方面進(jìn)行介紹,希望對大家有所幫助2023-10-10
淺談django model postgres的json字段編碼問題
下面小編就為大家分享一篇淺談django model postgres的json字段編碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
Python3內(nèi)置函數(shù)chr和ord實現(xiàn)進(jìn)制轉(zhuǎn)換
這篇文章主要介紹了Python3內(nèi)置函數(shù)chr和ord實現(xiàn)進(jìn)制轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
python使用urlparse分析網(wǎng)址中域名的方法
這篇文章主要介紹了python使用urlparse分析網(wǎng)址中域名的方法,涉及Python使用urlparse模塊操作URL的技巧,需要的朋友可以參考下2015-04-04

