python 中参数*args, **kwargs
python 中参数*args, **kwargs
def foo(*args, **kwargs):
print 'args = ', args
print 'kwargs = ', kwargs
print '---------------------------------------'
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”。
-------------------------------------------------------------------------------------------这里看下网上github的代码:
def layer(op): '''Decorator for composable network layers.''' def layer_decorated(self, *args, **kwargs): # Automatically set a name if not provided. name = kwargs.setdefault('name', self.get_unique_name(op.__name__))# Figure out the layer inputs. if len(self.terminals) == 0: raise RuntimeError('No input variables found for layer %s.' % name)elif len(self.terminals) == 1: layer_input = self.terminals[0]else: layer_input = list(self.terminals)# Perform the operation and get the output. layer_output = op(self, layer_input, *args, **kwargs)# Add to layer LUT. self.layers[name] = layer_output# This output is now the input for the next layer. self.feed(layer_output)# Return self for chained calls. return self return layer_decorated 参考:http://blog.csdn.net/anhuidelinger/article/details/10011013 继续
python @ 用法
def funA(arg):print 'A'a=arg()@funA
def funB():print 'B'
此处的@相当于funA(funB())
装饰器背后的主要动机源自python面向对象编程,装饰器是在函数调用之上的修饰,这些修饰仅是当声明一个函数或者方法的时候,才会应用的额外调用。 装饰器的语法以@开头,接着是装饰器韩式的名字和可选的参数。紧跟着装饰器声明的是被修饰的函数,和修饰函数的可选参
转载于:https://www.cnblogs.com/YouXiangLiThon/p/7478040.html
python 中参数*args, **kwargs相关推荐
- python可变参数 *args **kwargs使用说明
python函数-可变参数 *args args 是 arguments 的缩写,表示位置参数: *args 可以讲函数接受到的输入参数变成tuple格式:(空tuple也可以接收) def func ...
- 一文弄懂Python中的*args 和 **kwargs
1. 引言 在本文中,我们将讨论 Python 中的 *args 和 **kwargs 及其用法和示例. 闲话少说,我们直接开始吧. 2. 问题引入 在Python中写函数的时候,我们经常需要给函数传 ...
- python中参数是什么_python中parameter是什么
parameter:形参,指的是函数中的参数名称:def add(x,y):>>>>>>>>>>>>>此处x,y为形参. ...
- python什么意思k_对python中的*args与**kwgs的含义与作用详解
对python中的*args与**kwgs的含义与作用详解 在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数, ...
- args在python中什么意思_对python中的*args与**kwgs的含义与作用详解
在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kw是关键字参数 例如下面的代码 def fo ...
- python中参数的传递
一.函数的参数传递本质上就是∶从实参到形参的赋值操作.Python中"一切皆对象",所有的赋值操作都是'引用的赋值".所以,Python中参数的传递都是"引用传 ...
- Python3中参数*args和**kwargs介绍
在Python中,我们可以使用两种特殊符号将可变数量的参数传递给函数:*args和**kwargs.你可以使用任何单词代替args和kwargs,但通常做法是使用args和kwargs. ...
- Python中的*args和**kwargs是什么?该如何使用?
2020-01-16 12:30:00 全文共2911字,预计学习时长9分钟 来源:Pexels 在编程中,函数就是生命! 作为使用Python的新手--无论是编程新手,还是熟悉另一语言的人--都需要 ...
- python的认识_理解 Python 中的 *args 和 **kwargs
Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one ...
最新文章
- java 生成并覆盖文件,基于mybatis-plus生成不被覆盖的文件并支持swagger注解
- All is about C!
- 什么是空间复杂度(What is actually Space Complexity ?)
- Mysql semi-sync VS group replication, 谁快?
- 深度学习(19)神经网络与全连接层二: 测试(张量)实战
- 从数学入手,3招打破机器学习的边界
- 重写Checkbox 改写选择框的大小
- 手机MODEM开发( 25)---如何配置VoLTE, ViLTE and VoWifi(IMS config for VoLTE, ViLTE and VoWifi)
- scala case语句_Scala模式与case语句匹配
- @Bean和@Componet区别
- git mac 可视化diff_Git可视化比较工具P4Merge
- .mpp文件在线打开网址
- Cyclical Learning Rates
- 漫画喵的100行Python代码逆袭
- NNDL 作业4:第四章课后题
- 运动装备品牌排行榜,运动爱好者必备好物分享
- emqttd 2.2安装和测试使用
- 败团---吴家私房菜(别有天茶艺居)
- Gartner陈勇:中国企业更积极探索双模IT
- 【NLP基础中文处理】jieba分词初级的应用,以及统计《茅山后裔》的主要人物