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

Python函數(shù)參數(shù)中的*與**運算符

 更新時間:2021年04月07日 09:25:56   作者:12345611654123  
這篇文章主要介紹了Python函數(shù)參數(shù)中的*與**運算符,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

問題描述

在閱讀某些代碼時,經(jīng)常會看到函數(shù)定義/調用時的參數(shù)前帶有 * 或者 ** 運算符,比較糊涂,今天來探究記錄一番.

函數(shù)定義時的 * 和 **

查閱相關資料得知,在參數(shù)前面加上* 號 ,意味著參數(shù)個數(shù)不止一個,而帶一個星號(*)參數(shù)的函數(shù)傳入的參數(shù)存儲為一個元組(tuple),帶兩個(*)號則是表示字典(dict)!

我們定義3個函數(shù)來分別測試一下*和**的功能。

第一個函數(shù)func1參數(shù)列表中有兩個參數(shù),其中參數(shù)b前有*
第二個函數(shù)func2參數(shù)列表中有兩個參數(shù),其中參數(shù)b前有**
第三個函數(shù)func3參數(shù)列表中有三個參數(shù),第二個參數(shù)前有*,第三個參數(shù)前有**

def func1(a, *b):
  print(a)
  print(b)
  
def func2(a, **b):
  print(a)
  print(b)
  
def func3(a, *b, **c):
  print(a)
  print(b)
  print(c)

然后我們進行參數(shù)傳入

func1(1, 2, 3, 4)
print("---"*24)
func2(1, x=1, y=2)
print("---"*24)
func3(1, 2, 3, 4, x=5, y=6)

打印結果為:

$python3 main.py
 
(2, 3, 4)
------------------------------------------------------------------------
1
{'x': 1, 'y': 2}
------------------------------------------------------------------------
1
(2, 3, 4)
{'x': 5, 'y': 6}

可以看到,第一個函數(shù)將多余1個的后續(xù)參數(shù)全部以元組形式賦值給了帶*參數(shù)b,第二個函數(shù)則將多余參數(shù)以字典形式賦值給了帶**參數(shù)b,當*和**同時存在時,一個星號(*)參數(shù)的函數(shù)傳入的參數(shù)存儲為一個元組(tuple),帶兩個(*)號則是表示字典(dict)。

如果這里我們不使用賦值形式傳入?yún)?shù)來調用func2時,程序則會報錯,例如

func2(1, 2, 3, 4)
print("---"*24)

將會有如下報錯信息:

Traceback (most recent call last):
  File "main.py", line 18, in <module>
    func2(1, 2, 3, 4)
TypeError: func2() takes 1 positional argument but 4 were given

*和**調用時的作用

在調用時,*主要是用來解壓參數(shù)列表,對于set、tuple、list、dict(會取其values的值)類型的數(shù)據(jù)都適用。實驗代碼如下:

def func4(a, b):
  print(a)
  print(b)

params_set = (1, 2)
params_tuple = (1, 2)
params_list = [1, 2]
params_dict = {
  "a": 1,
  "b": 2
}

我們使用*參數(shù)方式對其分別進行調用

print("***"*24)
func4(*params_set)
print("***"*24)
func4(*params_tuple)
print("***"*24)
func4(*params_list)
print("***"*24)
func4(*params_dict)
print("***"*24)

打印結果如下:

************************************************************************
1
2
************************************************************************
1
2
************************************************************************
1
2
************************************************************************
a
b
************************************************************************

 可以看到,*將參數(shù)按順序一一賦值(set并無順序,因此盲猜結果是隨機的,未實驗驗證),而dict類型則是將字典的keys作為函數(shù)參數(shù)進行賦值。

**參數(shù)方式則要求輸入必須是一個dict,而且變量名稱要與函數(shù)定義的變量名稱一致,實驗代碼如下:

params_dict1 = {
  "a": 1,
  "b": 2
}
params_dict2 = {
  "x": 1,
  "y": 2
}

print("---"*24)
func4(**params_dict1)
print("---"*24)
func4(**params_dict2)

打印結果如下:

------------------------------------------------------------------------
1
2
------------------------------------------------------------------------
Traceback (most recent call last):
  File "main.py", line 57, in <module>
    func4(**params_dict2)
TypeError: func4() got an unexpected keyword argument 'x'

可以看到,當變量名稱與函數(shù)定義的變量名稱不一致時,程序會報錯

參考

Python函數(shù)中參數(shù)前帶*和**是什么意思?
Execute Python-3 Online (Python v3.6.2),

到此這篇關于Python函數(shù)參數(shù)中的*與**運算符的文章就介紹到這了,更多相關Python *與**運算符內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python 獲取當天凌晨零點的時間戳方法

    python 獲取當天凌晨零點的時間戳方法

    今天小編就為大家分享一篇python 獲取當天凌晨零點的時間戳方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python 中文編碼亂碼問題的解決

    python 中文編碼亂碼問題的解決

    中文編碼問題一直是程序員頭疼的問題,本文將盡量用通俗的語言帶大家徹底的了解字符編碼以及Python2和3中的各種編碼問題。感興趣的可以了解一下
    2021-11-11
  • 如何在python中使用openpyxl庫讀寫Excel.xlsx文件(有參考列程)

    如何在python中使用openpyxl庫讀寫Excel.xlsx文件(有參考列程)

    這篇文章主要給大家介紹了關于如何在python中使用openpyxl庫讀寫Excel.xlsx文件的相關資料,openpyxl是一個第三方庫,可以處理xlsx格式的Excel文件,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06
  • Pytorch技法之繼承Subset類完成自定義數(shù)據(jù)拆分

    Pytorch技法之繼承Subset類完成自定義數(shù)據(jù)拆分

    這篇文章主要介紹了Pytorch技法之繼承Subset類完成自定義數(shù)據(jù)拆分,下文我們介紹一些下面是加載內置訓練數(shù)據(jù)集的常見操作,需要的小伙伴可以參考一下
    2022-02-02
  • Python?Flask-Login模塊使用案例詳解

    Python?Flask-Login模塊使用案例詳解

    Flask-Login?通過?user?session,提供登錄的常見任務,比如登入?(logging?in)、登出?(logging?out)?和當前用戶?(current?user),這篇文章主要介紹了Python?Flask-Login模塊使用詳解,需要的朋友可以參考下
    2023-01-01
  • python 請求服務器的實現(xiàn)代碼(http請求和https請求)

    python 請求服務器的實現(xiàn)代碼(http請求和https請求)

    本篇文章主要介紹了python 請求服務器的實現(xiàn)代碼(http請求和https請求),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • python目標檢測非極大抑制NMS與Soft-NMS

    python目標檢測非極大抑制NMS與Soft-NMS

    這篇文章主要weidajia?介紹了python目標檢測非極大抑制NMS與Soft-NMS實現(xiàn)過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python玩轉PDF的各種騷操作

    Python玩轉PDF的各種騷操作

    Portable Document Format(可移植文檔格式),或者PDF是一種文件格式,可以用于跨操作系統(tǒng)的呈現(xiàn)和文檔交換。這篇文章主要介紹了Python玩轉PDF的各種騷操作,需要的朋友可以參考下
    2019-05-05
  • Python基于pygame實現(xiàn)的font游戲字體(附源碼)

    Python基于pygame實現(xiàn)的font游戲字體(附源碼)

    這篇文章主要介紹了Python基于pygame實現(xiàn)的font游戲字體,涉及Python響應鍵盤按鍵動態(tài)操作圖片元素的相關技巧,需要的朋友可以參考下
    2015-11-11
  • Python中的super()方法使用簡介

    Python中的super()方法使用簡介

    這篇文章主要介紹了Python中的super()方法的使用,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08

最新評論

洛隆县| 衡水市| 黄山市| 青川县| 德安县| 兖州市| 隆林| 大名县| 兴仁县| 郁南县| 民勤县| 灵台县| 泾源县| 清涧县| 富蕴县| 凉城县| 曲周县| 深圳市| 关岭| 托里县| 那曲县| 平山县| 仲巴县| 金川县| 井冈山市| 许昌县| 虹口区| 河北省| 开鲁县| 克什克腾旗| 元朗区| 永宁县| 思南县| 孟村| 新干县| 松潘县| 平邑县| 临高县| 平塘县| 澎湖县| 诸暨市|