Python中的*self,*self._args, **kwargs
任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料。其他平台(知乎/B站)也是同名「图灵的猫」,不要迷路哦~
在python中,有些常见方法参数是:*self._args, **kwargs,如:self._target(*self._args, **self._kwargs)。经过查找一些资料,可以归纳为以下两种类型:
- *self._args 表示接受元组类参数;
- **kwargs 表示接受字典类参数;
例子:
def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------------------------'
if __name__ == '__main__':foo(1,2,3,4)foo(a=1,b=2,c=3)foo(1,2,3,4, a=1,b=2,c=3)foo('a', 1, None, a=1, b='2', c=3)
输出结果如下:
args = (1, 2, 3, 4)
kwargs = {}
---------------------------------------
args = ()
kwargs = {'a': 1, 'c': 3, 'b': 2}
---------------------------------------
args = (1, 2, 3, 4)
kwargs = {'a': 1, 'c': 3, 'b': 2}
---------------------------------------
args = ('a', 1, None)
kwargs = {'a': 1, 'c': 3, 'b': '2'}
---------------------------------------
可以看到,这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”
此外,在Python类定义的方法中,有这样一种写法:
class Test_(object):def __init__(self, x, y):self.__x = xself.__y = ydef __repr__(self):class_name = type(self).__name__return '{}:({!r}, {!r})'.format(class_name, *self)def __iter__(self):return (i for i in (self.__x, self.__y))def test(*self):print(self)def test2(self):print(self)
输出如下:
>>>dd.test()
(Test_:(2, 3),)>>>dd.test2()
Test_:(2, 3)>>>dd
Test_:(2, 3)
从上面的例子可以看出,在方法中传入(*self),执行打印操作时,返回值是序列(这里是单元素元组),而传入self参数时,会返回我们期待的repr格式
Python中的*self,*self._args, **kwargs相关推荐
- python 中*args 和 **kwargs的区别
*args的用法 当你不确定你的函数里将要传递多少参数时你可以用*args.例如,它可以传递任意数量的参数: def print_everything(*args):for count, thing ...
- Python中的*args和**kwargs是什么?该如何使用?
2020-01-16 12:30:00 全文共2911字,预计学习时长9分钟 来源:Pexels 在编程中,函数就是生命! 作为使用Python的新手--无论是编程新手,还是熟悉另一语言的人--都需要 ...
- python中args和kwargs_Python 函数参数*args和**kwargs
尽管*args和**kwargs参数不受重视,但这它们是Python中非常有用的特性.了解其中的潜能会让你成为更高效的开发者. *args和**kwargs参数到底有什么用呢?它们能让函数接受可选参数 ...
- Python 中的*args和**kwargs
实际上真正的Python参数传递语法是*和**.*args和**kwargs只是一种约定俗成的编程实践.我们也可以写成*vars和**kvars. 可以看到,这两个是python中的可变参数. *ar ...
- python中的魔法参数:*args和**kwargs
def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '------------------- ...
- python args kwargs 理解_*args和**kwargs在python中的作用
我发现PYTHON新手在理解*args和**kwargs这两个魔法变量的时候有些困难.他们到底是什么呢? 首先,我先告诉大家一件事情,完整地写*args和**kwargs是不必要的,我们可以只写*和* ...
- python中*args **kwargs
Python中*args和**kwargs的区别 (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 中秋的夜,微凉,但却始终看不见月亮. 我想,它一定是害羞了,悄悄的躲到了乌 ...
- python 中参数*args, **kwargs
python 中参数*args, **kwargs def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs ...
- (转)python中的参数:*args和**kwargs
def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '------------------- ...
- Python中可变长度的参数args和**kwargs
目录 1.*args的使用方法 2.**kwargs的使用方法 在编程的过程中,我们可能会遇到函数参数个数不固定的情况.这时就需要使用可变长度的函数参数来实现我们的功能.在Python中,有两种变长参 ...
最新文章
- SpringMVC学习手册(三)------EL和JSTL(上)
- 多个文件中的数据处理,输出自己想要是数据
- 你的首个 Progressive Web App
- Apache kafka 工作原理介绍
- VoIP安全问题解析
- mahout in Action2.2-给用户推荐图书(2)-分析对用户推荐书目的结果
- 数据帧,数据包,报文段,报文,分组,数据包的概念和区别
- flowable 任务节点多实例使用
- UE4 查看打包文件内容
- Java描述设计模式(05):原型模式
- MFC1、动态创建CButton
- [Python] L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
- 硬盘 : ATA、ATAPI的含义
- Servlet基础详解
- 一个好的测试工程师的简历到底是怎么写的
- 数字化转型中平台思维的十大要素-《数字化转型的道与术》
- 当《流浪地球》冲过2亿:中国的科幻大片为什么来得这么晚?
- cgb2107-day02
- 数据结构课程设计(部分选题)
- iPhone 12已安装的App显示正在安装处理方法