python的kwargs,args是什么意思python
计算机编程语言函数参数(Python函数参数)Python允许我们为函数定义三种类型的参数:
计算机编程语言允许我们为函数定义三种类型的参数:
形式参数,例如定义添加(a,b)形式参数,例如定义添加(a,b)使用*参数的非关键字参数的可变数量,例如def add(*args)
使用*参数的可变数量的非关键字参数,例如def add(*args)使用* *克瓦查的关键字参数或命名参数的可变数量,例如def add(* *夸脱).
使用**克瓦查的可变数量的关键字参数或命名参数,例如定义添加(*)夸脱).
关于函数自变量的几个要点?
有关函数参数的一些重要点。
当我们定义一个函数参数时,顺序应该是形参后跟*参数和* *克沃格.当定义函数参数时,顺序应为形式参数,后跟*参数和**克沃格。不一定要使用一个参数名和夸尔斯,我们也可以使用其他名称。但是,使用它们是惯例。这将使你的代码易于阅读和理解。
使用名称一个参数名和参数不是强制性的,我们也可以使用其他名称。但是,使用它们是惯例。这将使您的代码易于阅读和理解一个参数名变量的类型是元组.我们可以将一个元组作为函数参数传递给带参数的地图.
一个参数名变量的类型为元组。我们可以将元组作为函数参数传递给一个参数名进行映射参数变量属于词典类型。所以我们可以通过一个字典作为参数来映射夸尔斯.
参数变量的类型为字典。因此我们可以将字典作为参数传递给夸尔斯。为什么我们需要*参数和** kwargs?(为什么我们需要*参数和**kwargs?)
假设我们有一个将两个数相加的函数:
假设我们有一个将两个数字相加的函数:
def add_two_numbers(a,b):返回有现在我们要扩展这个来加三个数。我们不能只是改变这个功能,因为它可能会在其他地方使用,这将是一个突破性的变化。因此,我们引入另一个函数来增加三个数。
现在我们要扩展它以添加三个数字。我们不能仅仅更改此功能,因为它可能会在其他地方使用,这将是一个重大突破。因此,我们引入了另一个函数,将三个数字相加。
def add_three_numbers(a,b,c):返回a b c你明白我的意思了吧?因为我们可以选择为函数指定可变数量的参数,所以我们可以定义一个通用函数来添加数字。
你知道我要去哪里了吧?由于我们可以为函数指定可变数量的参数,因此我们可以定义一个通用函数来添加数字。
Python * args示例(Python *args示例)让我们定义一个使用*参数变量添加数字的通用函数。
让我们定义一个通用函数,以使用*参数变量加数字。
def add(* args):total=0 for args in args:total=total arg return total print(add(1,2))print(add(1,2,3))print(add(1,2,3,4)) * args和**克瓦查是什么类型?(什么是*参数和* *克瓦查的类型?)def zap(*args,* * kwargs):print(type(args))print(type(kwargs))zap()输出:
输出:
class tuple class dict Python * * kwargs示例(Python **kwargs示例)让我们定义一个函数来展示* *克瓦查变量的用法。
让我们定义一个函数来显示**克瓦查变量的用法。
def kwargs _ processor(* * kwargs):对于k,v在kwargs中。items():print(f key={ k } and Value={ v } )kwargs _ processor(name= Pankaj ,age=34)kwargs _ processor(country= India ,capital=新德里)输出:
输出:
Key=姓名和值=PankajKey=年龄和值=34 key=国家和值=印度key=资本和值=新德里为*参数和**克瓦查映射传递元组和字典(为*参数和* *克瓦查映射传递元组和字典)让我们看看如何将元组值传递给带有一个参数名和词典元素的地图到参数变量。
让我们看看如何将元组值与一个参数名和词典元素映射到参数变量。
t=(10,30,60)print(add(* t))d={ name : Pankaj , age: 34}kwargs_processor(**d)输出:
输出:
100k ey=姓名和值=PankajKey=年龄和值=34注意在使用元组将其值映射到一个参数名时*的使用。类似地,**用于将词典元素映射到参数变量。
注意在使用元组将其值映射到一个参数名时使用*。同样,**用于将词典元素映射到参数变量。
何时使用*参数和**夸尔斯(何时使用*参数和* *克瓦查)您可以在任何需要可变数量参数的函数中使用它们。然而,它们在两种特定情况下非常有用——模拟函数响应和编写通用装饰函数。
您可以在期望可变数量参数的任何函数中使用它们。但是,它们在两种特定情况下非常有用-模拟函数响应和编写通用装饰函数。
用*参数和**克瓦查模拟函数响应(用*参数和* *克瓦查模拟函数响应)假设我们有一个这样定义的应用程序接口类:
假设我们有一个如下定义的应用程序接口类:
类apiHelper: def call_api(self,url,input_json): #一些复杂的逻辑返回复杂响应数据我们可以创建一个测试模拟器函数,映射到应用程序接口函数,生成测试响应。
我们可以创建一个测试模拟器函数并将其映射到应用程序接口函数以生成一个测试响应。
class mytest class:def test _ call _ API(self,*args,* * kwargs):return test _ response _ data # Assign API函数使用我们的测试函数API助手。call _ API=mytest类。测试调用应用编程接口让我们看看现在使用我们的应用程序接口函数会发生什么。
让我们看看现在使用我们的应用程序接口函数时会发生什么。
ah=API helper()print(ah。call _ API())打印(啊。call _ API(1,url=https://www.journaldev.com ,input _ JSON={ })print(ah。call _ API(1,2,url=https://www.journaldev.com ))输出:
输出:
测试_响应_数据测试_响应_数据测试_响应_数据*参数和**克瓦查的装饰函数(用于*参数和* *克瓦查的装饰函数)让我们看看如何定义一个装饰函数来记录函数变量。
让我们看看如何定义一个装饰器函数来记录函数变量。
def log _ arguments(func):def inner(* args,* * kwargs):print(f args的参数:{args},kwargs:{ kwargs } )return func(* args,**kwargs) return inner现在,我们可以将这个装饰函数与任何其他函数一起使用,将它们的参数记录到控制台。
现在,我们可以将此装饰器函数与任何其他函数一起使用,以将其参数记录到控制台。
@log_argumentsdef foo(x,y,z): return x y zsum_ints=foo(1,2,z=5)print(sum _ ints)@ log _ arguments def bar(x,*args,* * kwargs):total=x for args in args:total=total arg for key,value in kwargs。items():total=total value return total sum _ ints=bar(1,2,3,a=4,b=5)print(sum_ints)输出:
输出:
一个参数名的参数:(1,2),kwargs:{ z :5 } 8 args:(1,2,3),kwargs:{a: 4, b: 5}15 GitHub资源库。开源代码库存储库中检出完整的大蟒脚本和更多计算机编程语言示例。翻译自:https://www . journal dev . com/24960/python-args-kwargs
历史中提交的图片或压缩文件
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。