日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python知识:*args 和**kwargs

發(fā)布時(shí)間:2025/3/21 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python知识:*args 和**kwargs 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. *args 和 **kwargs

????????多數(shù)新的 Python 程序員都很難弄清楚 *args 和 **kwargs 魔術(shù)變量。那么它們是什么?首先讓我告訴你,沒有必要寫 *args 或 **kwargs。只有 *(星號(hào))是必需的。您也可以編寫 *var 和 **vars。編寫 *args 和 **kwargs 只是一種約定。所以現(xiàn)在讓我們先看看 *args。

2? 應(yīng)用 *args參數(shù)

????????*args 和 **kwargs 主要用于函數(shù)定義。 *args 和 **kwargs 允許您將可變數(shù)量的參數(shù)傳遞給函數(shù)。變量在這里的含義是您事先不知道用戶可以將多少個(gè)參數(shù)傳遞給您的函數(shù),因此在這種情況下您使用這兩個(gè)關(guān)鍵字。 *args 用于向函數(shù)發(fā)送非關(guān)鍵字可變長度參數(shù)列表。這是一個(gè)示例,可幫助您獲得清晰的概念:

def?test_var_args(f_arg, *argv):

????print("first normal arg:", f_arg)

????for?arg in?argv:

????????print("another arg through *argv:", arg)

test_var_args('yasoob', 'python', 'eggs', 'test')

這會(huì)產(chǎn)生以下結(jié)果:

first normal arg: yasoob

another arg through *argv: python

another arg through *argv: eggs

another arg through *argv: test

我希望這可以消除您的任何困惑。所以現(xiàn)在讓我們談?wù)?**kwargs

3 用 **kwargs參數(shù)

????????**kwargs 允許您將關(guān)鍵字可變長度的參數(shù)傳遞給函數(shù)。如果你想在函數(shù)中處理命名參數(shù),你應(yīng)該使用 **kwargs。這是一個(gè)讓您繼續(xù)使用它的示例:

def?greet_me(**kwargs):

????for?key, value in?kwargs.items():

????????print("{0}?= {1}".format(key, value))

>>>?greet_me(name="yasoob")

name =?yasoob

????????因此,您可以看到我們?nèi)绾卧诤瘮?shù)中處理關(guān)鍵字參數(shù)列表。這只是 **kwargs 的基礎(chǔ)知識(shí),您可以看到它有多么有用。現(xiàn)在讓我們談?wù)勅绾问褂?*args 和 **kwargs 調(diào)用帶有參數(shù)列表或字典的函數(shù)。

4 用 *args 和 **kwargs 做函數(shù)形參

????????所以在這里我們將看到如何使用 *args 和 **kwargs 調(diào)用函數(shù)。只要考慮你有這個(gè)小功能:

def?test_args_kwargs(arg1, arg2, arg3):

????print("arg1:", arg1)

????print("arg2:", arg2)

????print("arg3:", arg3)

????????現(xiàn)在您可以使用 *args 或 **kwargs 將參數(shù)傳遞給這個(gè)小函數(shù)。這是如何做到的:

# first with *args

>>>?args =?("two", 3, 5)

>>>?test_args_kwargs(*args)

arg1: two

arg2: 3

arg3: 5

# now with **kwargs:

>>>?kwargs =?{"arg3": 3, "arg2": "two", "arg1": 5}

>>>?test_args_kwargs(**kwargs)

arg1: 5

arg2: two

arg3: 3

5 使用 *args **kwargs 和正式 args 的順序

所以如果你想在函數(shù)中使用所有這三個(gè),那么順序是

some_func(fargs, *args, **kwargs)

6 應(yīng)用時(shí)機(jī)

????????這真的取決于你的要求是什么。最常見的用例是制作函數(shù)裝飾器(在另一章中討論)。此外,它也可以用于猴子修補(bǔ)。猴子補(bǔ)丁意味著在運(yùn)行時(shí)修改一些代碼。假設(shè)您有一個(gè)帶有名為 get_info 的函數(shù)的類,該函數(shù)調(diào)用 API 并返回響應(yīng)數(shù)據(jù)。如果我們想測(cè)試它,我們可以用一些測(cè)試數(shù)據(jù)替換 API 調(diào)用。例如:

import?someclass

def?get_info(self, *args):

????return?"Test data"

someclass.get_info =?get_info

我相信您也可以想到其他一些用例。

猴子補(bǔ)丁:是程序在本地?cái)U(kuò)展或修改支持系統(tǒng)軟件的一種方式(僅影響程序的運(yùn)行實(shí)例),可以理解為動(dòng)態(tài)補(bǔ)丁。

總結(jié)

以上是生活随笔為你收集整理的python知识:*args 和**kwargs的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。