python *arg **kwarg 详解

现在我有一个最简单的加法(Jiafa)函数:

def Jiafa(x, y):
    z = x + y
    return z
print(Jiafa(1,2))

这个很简单,一看就知道输出等于3。
那下一个问题是,如果我要算不固定个数的数字相加,那怎么来计算呢?
这时就可以使用*arg和`**kwarg

*args可以理解为长度不固定的列表。

**kwarg可以理解为长度不固定的字典

首先,*args**kwarg不是必须成对出现,也不是必须叫这个名字,也可以叫*x**y。写成这样,只是一种约定俗成,比如给别人讲故事:从前有个张三和李四……大家一听就知道你要说什么了,而不能说从前有个马七狗八,大家虽然也能听懂,但总是不太好理解。

先说*args的作用,还是开篇的案例,我们要算不定长的加法,就可以用*args来定义了,当然也可以叫*x*y

def Jiafa(*args):
      sum = 0
      for i in args:
           sum = sum + i
      print(sum)
     
 Jiafa(1, 3, 5)
 Jiafa(2, 4, 6, 8, )

**kwargs的字典呢?先看一下普通的字典,用一对大括号{}就可以创建字典,比如下面3行程序,就可以编一个字典的程序:

dict = {"system": "系统", "China": "中国", "link": "联接"}
 
x = input("请输入一个英文单词:")
print(dict.get(x, "本字典里没找到!"))

现在问题来了,如果开始不知道字典里都有哪些内容,需要在程序运程中才知道怎么办?这个时候就可以用**kwargs来定义了。我们先用**kwargs来定义一个函数,函数内容先都不用写,再看看下面的小程序:

def dict(**kwargs):
    return kwargs
 
mydict = dict(system="系统", China="中国", link="联接")
x = input("请输入单词:")
if x in mydict.keys():
    print("中文意思:", mydict[x])
else:
    print("抱歉,没找到。")

以上的功能,都是最精减的代码能表达出*args和**kwarg的功能的。

Reference:
https://blog.csdn.net/qq_18495537/article/details/79075052

猜你喜欢

转载自blog.csdn.net/weixin_42018112/article/details/88074157