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相关推荐

  1. python可变参数 *args **kwargs使用说明

    python函数-可变参数 *args args 是 arguments 的缩写,表示位置参数: *args 可以讲函数接受到的输入参数变成tuple格式:(空tuple也可以接收) def func ...

  2. 一文弄懂Python中的*args 和 **kwargs

    1. 引言 在本文中,我们将讨论 Python 中的 *args 和 **kwargs 及其用法和示例. 闲话少说,我们直接开始吧. 2. 问题引入 在Python中写函数的时候,我们经常需要给函数传 ...

  3. python中参数是什么_python中parameter是什么

    parameter:形参,指的是函数中的参数名称:def add(x,y):>>>>>>>>>>>>>此处x,y为形参. ...

  4. python什么意思k_对python中的*args与**kwgs的含义与作用详解

    对python中的*args与**kwgs的含义与作用详解 在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数, ...

  5. args在python中什么意思_对python中的*args与**kwgs的含义与作用详解

    在定义函数的时候参数通常会使用 *args与**kwgs,形参与实参的区别不再赘述,我们来解释一下这两个的作用. *args是非关键字参数,用于元组,**kw是关键字参数 例如下面的代码 def fo ...

  6. python中参数的传递

    一.函数的参数传递本质上就是∶从实参到形参的赋值操作.Python中"一切皆对象",所有的赋值操作都是'引用的赋值".所以,Python中参数的传递都是"引用传 ...

  7. Python3中参数*args和**kwargs介绍

    在Python中,我们可以使用两种特殊符号将可变数量的参数传递给函数:*args和**kwargs.你可以使用任何单词代替args和kwargs,但通常做法是使用args和kwargs.       ...

  8. Python中的*args和**kwargs是什么?该如何使用?

    2020-01-16 12:30:00 全文共2911字,预计学习时长9分钟 来源:Pexels 在编程中,函数就是生命! 作为使用Python的新手--无论是编程新手,还是熟悉另一语言的人--都需要 ...

  9. python的认识_理解 Python 中的 *args 和 **kwargs

    Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def test_defargs(one, two = 2): print 'Required argument: ', one ...

最新文章

  1. java 生成并覆盖文件,基于mybatis-plus生成不被覆盖的文件并支持swagger注解
  2. All is about C!
  3. 什么是空间复杂度(What is actually Space Complexity ?)
  4. Mysql semi-sync VS group replication, 谁快?
  5. 深度学习(19)神经网络与全连接层二: 测试(张量)实战
  6. 从数学入手,3招打破机器学习的边界
  7. 重写Checkbox 改写选择框的大小
  8. 手机MODEM开发( 25)---如何配置VoLTE, ViLTE and VoWifi(IMS config for VoLTE, ViLTE and VoWifi)
  9. scala case语句_Scala模式与case语句匹配
  10. @Bean和@Componet区别
  11. git mac 可视化diff_Git可视化比较工具P4Merge
  12. .mpp文件在线打开网址
  13. Cyclical Learning Rates
  14. 漫画喵的100行Python代码逆袭
  15. NNDL 作业4:第四章课后题
  16. 运动装备品牌排行榜,运动爱好者必备好物分享
  17. emqttd 2.2安装和测试使用
  18. 败团---吴家私房菜(别有天茶艺居)
  19. Gartner陈勇:中国企业更积极探索双模IT
  20. 【NLP基础中文处理】jieba分词初级的应用,以及统计《茅山后裔》的主要人物

热门文章

  1. 在3D场景中显示汉字
  2. javaSE学习 访问控制
  3. 八大妙招:改善企业网络安全
  4. 让你的echo带颜色
  5. 嘌呤含量高的食物大全
  6. Shuffling Machine (20)
  7. c语言 string.h部分常用函数的实现
  8. 实时音视频直播带货中影响用户体验的Bug根因
  9. Python接口自动化之logging封装及实战
  10. 佳士得于5月19日至27日以NFT形式拍卖安迪·沃霍尔作品