Python面试题之这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?

如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用*args

如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使用**kwargs

argskwargs这两个标识符是约定俗成的用法,你当然还可以用*bob**billy,但是这样就并不太妥。

下面是具体的示例:

def f(*args,**kwargs): print args, kwargs

l = [1,2,3]t = (4,5,6)d = {‘a‘:7,‘b‘:8,‘c‘:9}

f()f(1,2,3)                    # (1, 2, 3) {}f(1,2,3,"groovy")           # (1, 2, 3, ‘groovy‘) {}f(a=1,b=2,c=3)              # () {‘a‘: 1, ‘c‘: 3, ‘b‘: 2}f(a=1,b=2,c=3,zzz="hi")     # () {‘a‘: 1, ‘c‘: 3, ‘b‘: 2, ‘zzz‘: ‘hi‘}f(1,2,3,a=1,b=2,c=3)        # (1, 2, 3) {‘a‘: 1, ‘c‘: 3, ‘b‘: 2}

f(*l,**d)                   # (1, 2, 3) {‘a‘: 7, ‘c‘: 9, ‘b‘: 8}f(*t,**d)                   # (4, 5, 6) {‘a‘: 7, ‘c‘: 9, ‘b‘: 8}f(1,2,*t)                   # (1, 2, 4, 5, 6) {}f(q="winning",**d)          # () {‘a‘: 7, ‘q‘: ‘winning‘, ‘c‘: 9, ‘b‘: 8}f(1,2,*t,q="winning",**d)   # (1, 2, 4, 5, 6) {‘a‘: 7, ‘q‘: ‘winning‘, ‘c‘: 9, ‘b‘: 8}

def f2(arg1,arg2,*args,**kwargs): print arg1,arg2, args, kwargs

f2(1,2,3)                       # 1 2 (3,) {}f2(1,2,3,"groovy")              # 1 2 (3, ‘groovy‘) {}f2(arg1=1,arg2=2,c=3)           # 1 2 () {‘c‘: 3}f2(arg1=1,arg2=2,c=3,zzz="hi")  # 1 2 () {‘c‘: 3, ‘zzz‘: ‘hi‘}f2(1,2,3,a=1,b=2,c=3)           # 1 2 (3,) {‘a‘: 1, ‘c‘: 3, ‘b‘: 2}

f2(*l,**d)                   # 1 2 (3,) {‘a‘: 7, ‘c‘: 9, ‘b‘: 8}f2(*t,**d)                   # 4 5 (6,) {‘a‘: 7, ‘c‘: 9, ‘b‘: 8}f2(1,2,*t)                   # 1 2 (4, 5, 6) {}f2(1,1,q="winning",**d)      # 1 1 () {‘a‘: 7, ‘q‘: ‘winning‘, ‘c‘: 9, ‘b‘: 8}f2(1,2,*t,q="winning",**d)   # 1 2 (4, 5, 6) {‘a‘: 7, ‘q‘: ‘winning‘, ‘c‘: 9, ‘b‘: 8}

为什么提这个问题

有时候,我们需要往函数中传入未知个数的参数或关键词参数。有时候,我们也希望把参数或关键词参数储存起来,以备以后使用。有时候,仅仅是为了节省时间。

本文首发于Python黑洞网,博客园同步跟新

原文地址:https://www.cnblogs.com/pythonzhichan/p/11456744.html

时间: 2024-10-09 17:15:03

Python面试题之这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?的相关文章

python列表sort方法的两个参数key, reverse

使用列表的sort方法可以进行排序,其中有两个参数用来表示排序的方式,代码: In [7]: a = ['x11','abc323','e26','112ddd'] In [8]: a.sort(key=len, reverse=True) In [9]: a Out[9]: ['abc323', '112ddd', 'x11', 'e26'] In [10]: a.sort(key=lambda x:x[-1]) In [11]: a Out[11]: ['x11', 'abc323', 'e

Python小代码_13_生成两个参数的最小公倍数和最大公因数

def demo(m, n): if m > n: m, n = n, m p = m * n while m != 0: r = n % m n = m m = r return (int(p / n), n) val = demo(20, 30) print('最小公倍数为:', val[0]) print('最大公因数为:', val[1]) #输出结果 #最小公倍数为: 60 #最大公因数为: 10 原文地址:https://www.cnblogs.com/chuangming/p/84

python的函数介绍 位置参数 关键字参数 默认参数 参数组 *args **kwargs

1.数学意义的函数与python中的函数 数学意义的函数 y = 2*3+1 x =3 y =7 x是自变量,y是因变量 2.python中定义函数的方法 一个函数往往都是为了完成一个特定的功能而存在的,所以注释信息加上是个好习惯 def atest(x): "The function definitions" x += 1 return x def:     定义函数的关键字 atest:     函数名 ():     内可定义形参 "":    文档描述(非必

LeetCode | 面试题09. 用两个栈实现队列【剑指Offer】【Python】

LeetCode 面试题09. 用两个栈实现队列[剑指Offer][Easy][Python][栈][队列] 问题 力扣 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能.(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendTail","deleteHead","

python公司面试题集锦 python面试题大全

问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Parent): pass print Parent.x, Child1.x, Child2.x Child1.x = 2 print Parent.x, Child1.x, Child2.x Parent.x = 3 print Parent.x, Child1.x, Child2.x 答案 以上代码的

Python面试题整理-更新中

几个链接: 编程零基础应当如何开始学习 Python ? - 路人甲的回答 网易云课堂上有哪些值得推荐的 Python 教程? - 路人甲的回答 怎么用最短时间高效而踏实地学习 Python? - 路人甲的回答 如何学习Python爬虫[入门篇] - 学习编程 - 知乎专栏 Python常用库整理 - 学习编程 - 知乎专栏 学好Python的11个优秀资源 - 学习编程 - 知乎专栏 在开头依然推荐一个Python面试题整理比较好的网站:GitHub : 关于Python的面试题.同样推荐几道

python面试题总结与分析(一)

Q 1:Python 有哪些特点和优点? 作为一门编程入门语言,Python 主要有以下特点和优点: 可解释 具有动态特性 面向对象 简明简单 开源 具有强大的社区支持 当然,实际上 Python 的优点远不止如此,可以阅读该文档,详细了解: https://data-flair.training/blogs/python-tutorial/ Q 2:深拷贝和浅拷贝之间的区别是什么? 答:深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象.在 Pyt

python面试题(十)

Python中基本数据结构的操作 元组 列表 字典 集合 定义 新增 更改 删除 2.请尽可能列举python列表的成员方法,并给出一下列表操作的答案: (1)     a=[1, 2, 3, 4, 5], a[::2]=?, a[-2:] = ? (2)     一行代码实现对列表a中的偶数位置的元素进行加3后求和? 3.List = [-2, 1, 3, -6],如何实现以绝对值大小从小到大将 List 中内容排序. (1) 列表的sort方法和 sorted的区别是什么? 4.有一篇英文文

python 面试题1

python 面试题 - 知识点整理 分类: python面试2013-03-05 15:52 13754人阅读 评论(1) 收藏 举报 python面试题 目录(?)[+] 1. 在判断object是否是class的instances时,type和isinstance函数的区别? type(obj) => <type 'instance'> type(cls) => <type 'classobj'> 由上可知,所有obj type后统一为 instance type