最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中星號的五種用法小結(jié)

 更新時間:2023年02月28日 09:13:45   作者:趙卓不凡  
本文主要介紹了Python中星號的五種用法小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 引言

星號* 往往被稱為乘法運算符,是所有程序中最為常用的運算符號之一,在Python 中,星號還有很多隱藏的強大功能。
本文將用最容易理解的例子來解釋星號*的 五個使用場景,從初級用法到高階用法。
閑話少說,我們直接開始吧!

2. 乘法和冪運算符

最簡單的用法是利用星號作為基本的運算符:

  • 單個 * 用于乘法運算
  • 兩個 ** 表示冪運算

相關(guān)樣例用例代碼如下:

>>> 2*3
>>> 6
>>> 2**3
>>> 8

3. 函數(shù)接收數(shù)量不固定的入?yún)?/h2>

一般來說,函數(shù)往往接收固定數(shù)量的參數(shù);但是如果我們需要更大的靈活性,比如當不確定將傳遞多少個參數(shù)時,此時將是星號* 發(fā)揮作用的時候。

def print_genius(*names):
? ? print(type(names))
? ? for n in names:
? ? ? ? print(n)

print_genius('Elon Mask', 'Du Fu ', 'Li Bai')
# <class 'tuple'>
# Elon Mask
# Du Fu?
# Li Bai
def top_genius(**names):
? ? print(type(names))
? ? for k, v in names.items():
? ? ? ? print(k, v)

top_genius(Top1="Elon Mask", Top2="Du Fu", Top3="Li Bai")
# <class 'dict'>
# Top1 Elon Mask
# Top2 Du Fu
# Top3 Li Bai

如上例所示,在定義函數(shù)時,我們可以定義一個以一個或兩個星號為前綴的參數(shù),以捕獲不限制數(shù)量的參數(shù)輸入??偨Y(jié)如下:

  • 以 一個 * 為前綴的參數(shù)可以將任意數(shù)量的參數(shù)以元組形式傳入
  • 以兩個 ** 為前綴的參數(shù)可以將任意數(shù)量的參數(shù)以字典形式傳入

按照慣例,當我們定義的函數(shù)接收不定數(shù)量的參數(shù)時,我們一般采用以下函數(shù)定義形式:

def func(*args, **kwargs):
    pass

4. 限制函數(shù)入?yún)H以關(guān)鍵字形式輸入

星號* 的一個非??岬挠梅ㄊ鞘购瘮?shù)只能接收關(guān)鍵字參數(shù)。
很難理解,我們舉例來說明:

def genius(*, first_name, last_name):
? ? print(first_name, last_name)

# genius('Li','Bai')
# TypeError: genius() takes 0 positional arguments but 2 were given
genius(first_name='Li', last_name='Bai')
# Li Bai

上述代碼采用了星號* 限制了星號之后的參數(shù)必須采用關(guān)鍵字形式來調(diào)用上述函數(shù)。
實際上,如果我們只是想將一些參數(shù)限制為僅以關(guān)鍵字形式輸入同時另一部分參數(shù)依舊按照位置形式輸入,此時我們可以將位置參數(shù)放置在星號之前。
樣例代碼如下:

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

5. 可迭代對象解包操作

我們可以使用星號* 來解包可迭代對象,這將使我們的程序更加清晰且優(yōu)雅。
例如,如果我們要將不同的可迭代對象(例如一個列表,一個元組和一個集合)組合成一個新列表,哪種方法最好?
顯然,我們可以使用 for 循環(huán)來迭代所有元素并將它們逐一添加到新列表中,樣例代碼如下:

A = [1, 2, 3]
B = (4, 5, 6)
C = {7, 8, 9}
L = []
for a in A:
    L.append(a)
for b in B:
    L.append(b)
for c in C:
    L.append(c)
print(L)
# [1, 2, 3, 4, 5, 6, 8, 9, 7]

上述實現(xiàn)方式雖然可以完成我們的目的,但是代碼看起來太冗長了,而且不是很Pythonic 。
推薦的改進方式是使用列表生成式,如下所示:

A = [1, 2, 3]
B = (4, 5, 6)
C = {7, 8, 9}
L = [a for a in A] + [b for b in B] + [c for c in C]
print(L)
# [1, 2, 3, 4, 5, 6, 8, 9, 7]

上述代碼中,我們將三個 for 循環(huán)減少為一行列表生成式。它已經(jīng)是Pythonic了,但不一定是最簡單的!
是時候看看星號的強大之處啦。

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,3

6. 擴展可迭代對象解包

解包的語法可以讓我們的代碼更加簡潔,樣例如下:

L = [1, 2, 3, 4, 5, 6, 7, 8]
a, *b = L
print(a)
# 1
print(b)
# [2, 3, 4, 5, 6, 7, 8]

7. 結(jié)論

星號* 是程序中最常用的運算符之一。除了用作乘法運算符之外,它在Python中還有一些優(yōu)雅而強大的用法,這將幫助我們的代碼變得更加Pythonic 。

本文重點講解了星號的五種用法,并給出了相應(yīng)的代碼示例,您學廢了嘛?

到此這篇關(guān)于Python中星號的五種用法小結(jié)的文章就介紹到這了,更多相關(guān)Python 星號內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python中執(zhí)行shell命令的幾個方法小結(jié)

    python中執(zhí)行shell命令的幾個方法小結(jié)

    這篇文章主要介紹了python中執(zhí)行shell命令的幾個方法,本文一共給出3種方法實現(xiàn)執(zhí)行shell命令,需要的朋友可以參考下
    2014-09-09
  • 關(guān)于Python正則表達式 findall函數(shù)問題詳解

    關(guān)于Python正則表達式 findall函數(shù)問題詳解

    在寫正則表達式的時候總會遇到不少的問題,本文講述了Python正則表達式中 findall()函數(shù)和多個表達式元組相遇的時候會出現(xiàn)的問題
    2018-03-03
  • python binascii 進制轉(zhuǎn)換實例

    python binascii 進制轉(zhuǎn)換實例

    今天小編就為大家分享一篇python binascii 進制轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python如何獲取HTTP請求的Response Body

    Python如何獲取HTTP請求的Response Body

    這篇文章主要介紹了在Python中如何獲取HTTP請求的響應(yīng)體,包括使用內(nèi)置的urllib庫、第三方庫requests以及一些高級用法,有需要的小伙伴可以了解下
    2024-11-11
  • Django url反向解析的實現(xiàn)

    Django url反向解析的實現(xiàn)

    本文主要介紹了Django url反向解析的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • python安裝第三方包的三種方法圖文詳解

    python安裝第三方包的三種方法圖文詳解

    安裝Python第三方包有多種方法,下面這篇文章主要給大家介紹了關(guān)于python安裝第三方包的三種方法,文中通過圖文的非常詳細,需要的朋友可以參考下
    2024-03-03
  • 一文教會你利用Python程序讀取Excel創(chuàng)建折線圖

    一文教會你利用Python程序讀取Excel創(chuàng)建折線圖

    不同類型的圖表有不同的功能,柱形圖主要用于對比數(shù)據(jù),折線圖主要用于展示數(shù)據(jù)變化的趨勢,散點圖主要用于判斷數(shù)據(jù)的相關(guān)性,下面這篇文章主要給大家介紹了關(guān)于如何通過一文教你利用Python程序讀取Excel創(chuàng)建折線圖的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Flask實現(xiàn)的接口響應(yīng)中存在中文時接口返回為unicode亂碼的解決方法

    Flask實現(xiàn)的接口響應(yīng)中存在中文時接口返回為unicode亂碼的解決方法

    本文給大家分享了新版Flask實現(xiàn)的接口響應(yīng)中存在中文時接口返回為unicode亂碼的解決方法,文中通過代碼示例和圖文介紹的非常詳細,如果有遇到相同問題的朋友,可以參考閱讀本文
    2023-11-11
  • 淺談Python的垃圾回收機制

    淺談Python的垃圾回收機制

    本文雖然是轉(zhuǎn)載的,但是是真的好的一篇非常透徹的對Python垃圾回收機制的講解!!!這里推薦給大家
    2016-12-12
  • Python基礎(chǔ)教程之pytest參數(shù)化詳解

    Python基礎(chǔ)教程之pytest參數(shù)化詳解

    參數(shù)化就是把測試過程中的數(shù)據(jù)提取出來,通過參數(shù)傳遞不同的數(shù)據(jù)來驅(qū)動用例運行,這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之pytest參數(shù)化的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01

最新評論

亳州市| 太康县| 新余市| 尚志市| 乾安县| 萨迦县| 大余县| 曲水县| 浠水县| 锡林浩特市| 通海县| 庐江县| 广丰县| 莲花县| 同仁县| 突泉县| 灵丘县| 鄂尔多斯市| 清镇市| 仲巴县| 安溪县| 夏津县| 衡东县| 全州县| 九龙坡区| 永仁县| 中西区| 章丘市| 电白县| 临西县| 溧水县| 开封市| 上虞市| 沐川县| 沿河| 丰宁| 西盟| 武安市| 博爱县| 嵩明县| 孟村|