1. Python中使用*args和**kwargs

#!/usr/bin/env python3
# coding: utf-8
# File: args_kwargs_demo.py
# Author: lxw
# Date: 10/9/17 11:16 AM
"""
Demos for "*args" & "**kwargs" in Python.
Reference: [Python中如何使用*args和**kwargs](http://python.jobbole.com/83476/)
""" def func_args(*args):
print("type(args):{0}\targs:{1}\n".format(type(args), args)) def func_kwargs(**kwargs):
print("type(kwargs):{0}\tkwargs:{1}\n".format(type(kwargs), kwargs)) def func_args_kwargs(*args, **kwargs):
print("type(args):{0}\targs:{1}".format(type(args), args))
print("type(kwargs):{0}\tkwargs:{1}\n".format(type(kwargs), kwargs)) def func(arg1, arg2, arg3):
print("arg1:{0}\targ2:{1}\targ3:{2}".format(arg1, arg2, arg3)) def main():
# 函数定义
func_args_kwargs(1, 2, 3)
func_args_kwargs(1, a = 2, b = 3)
func_args_kwargs(a = 1, b = 2, c = 3) func_args(1, 2, 3)
# func_args(1, a = 2, b = 3) # TypeError: func_args() got an unexpected keyword argument 'a'
# func_args(a = 1, b = 2, c = 3) # TypeError # func_kwargs(1, 2, 3) # TypeError: func_kwargs() takes 0 positional arguments but 3 were given
# func_kwargs(1, a = 2, b = 3) # TypeError
func_kwargs(a = 1, b = 2, c = 3) print("---" * 10, "\n") # 函数调用
args = (1, "two", 3)
func(*args) args = [1, "two", 3]
func(*args)
del args[0]
print(args)
func("One", *args) args_dic = {"arg3": 3, "arg1": "", "arg2": "two"}
func(**args_dic)
del args_dic["arg1"]
print(args_dic)
func(1, **args_dic) if __name__ == '__main__':
main()
else:
print("Being imported as a module.") """
# Output:
type(args):<class 'tuple'> args:(1, 2, 3)
type(kwargs):<class 'dict'> kwargs:{} type(args):<class 'tuple'> args:(1,)
type(kwargs):<class 'dict'> kwargs:{'a': 2, 'b': 3} type(args):<class 'tuple'> args:()
type(kwargs):<class 'dict'> kwargs:{'a': 1, 'b': 2, 'c': 3} type(args):<class 'tuple'> args:(1, 2, 3) type(kwargs):<class 'dict'> kwargs:{'a': 1, 'b': 2, 'c': 3} ------------------------------ arg1:1 arg2:two arg3:3
arg1:1 arg2:two arg3:3
['two', 3]
arg1:One arg2:two arg3:3
arg1:1 arg2:two arg3:3
{'arg3': 3, 'arg2': 'two'}
arg1:1 arg2:two arg3:3
"""

Reference: Python中如何使用*args和**kwargs

2.  parameters with default values.

def func_default_value(a=1, b=2, c=3):
print("a:{0}\tb:{1}\tc:{2}".format(a, b, c)) def main():
# func_default_value(b=3, c=1, 2) # SyntaxError: positional argument follows keyword argumen
# func_default_value(a=2, 5, c=8) # SyntaxError: positional argument follows keyword argumen
func_default_value(2, 5, c=8) # OK
func_default_value("a", c=8) # OK
"""
# Output:
a: 2 b: 5 c:8
a: a b: 2 c:8
"""

Python函数参数*args和**kwargs的更多相关文章

  1. Python可变参数*args和**kwargs

    本文我们将通过示例了解 Python函数的可变参数*args和 **kwargs的用法. 知识预备:Python 函数和 Python 函数参数 在Python编程中,我们定义一个函数来生成执行类似操 ...

  2. Python函数中*args和**kwargs来传递变长参数的用法

    参考自: http://www.jb51.net/article/78705.htm 单星号形式(*args)用来传递非命名键可变参数列表.双星号形式(**kwargs)用来传递键值可变参数列表. 1 ...

  3. Python中函数参数 *args 和 **kwargs

    普通参数,即在调用函数时必须按照准确的顺序来进行参数传递. 默认参数,即参数含有默认值,在调用函数时可以进行参数传递,若没有进行参数传递则使用默认值,要注意,默认参数必须在普通参数的右侧(否则解释器无 ...

  4. python函数参数*args **kwargs

    毕业多年,把C++都就饭吃了....今天居然在纠结什么是形参什么是实参..... 定义函数里面写的参数就是形参,因为没有内存占用,实际调用时写的参数就是实参,因为有内存占用和传值 然后就是位置参数,可 ...

  5. Python函数可变参数*args及**kwargs详解

    初学Python的同学们看到代码中类似func(*args, **kwargs)这样的函数参数定义时,经常感到一头雾水. 下面通过一个简单的例子来详细解释下Python函数可变参数*args及**kw ...

  6. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  7. 理解 Python 中的可变参数 *args 和 **kwargs:

    默认参数:  Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def getSum(x,y=5): print "x:", x print "y:& ...

  8. python可变参数*args, **kwargs

    python可变参数*args, **kwargs def foo(* args, ** kwargs): print ' args = ',  args print ' kwargs = ',  k ...

  9. python函数参数的pack与unpack

    python函数参数的pack与unpack 上周在使用django做开发的时候用到了mixin(关于mixin我还要写一个博客专门讨论一下,现在请参见这里),其中又涉及到了一个关于函数参数打包(pa ...

随机推荐

  1. hive组件和执行过程

    转自http://blog.csdn.net/lifuxiangcaohui/article/details/40262021 对Hive的基本组成进行了总结: 1.组件: 元存储(Metastore ...

  2. MapReduce的InputFormat过程的学习

    转自:http://blog.csdn.net/androidlushangderen/article/details/41114259 昨天经过几个小时的学习,把MapReduce的第一个阶段的过程 ...

  3. socket udp广播和多播的简单实现

    UDP广播与多播 作者:legend QQ:1327706646 使用UDP协议进行信息的传输之前不需要建议连接.换句话说就是客户端向服务器发送信息,客户端只需要给出服务器的ip地址和端口号,然后将信 ...

  4. hdu 4240在(最大流)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4240 思路:题意真的有点难理解:在城市A->B之间通过所有路径一小时之内能通过最大的车辆(Max ...

  5. virtualbox虚拟机Linux系统与本地windows系统共享文件方法

    转自:http://jingyan.baidu.com/article/2fb0ba40541a5900f2ec5f07.html

  6. shell脚本学习总结01--文件描述符和重定向

    文件描述符是与文件输入和输出的相关联的整数,它们用来追踪已打开的文件,文件描述符0,1,2是系统预留的. 0 --> stdin (标准输入) 1 --> stdout (标准输出) 2 ...

  7. android硬件返回

    1.第一种 @Override    public boolean onKeyUp(int keyCode, KeyEvent event) {        //点击回退键        if(Ke ...

  8. 更改hadoop native库文件后datanode故障

    hadoop是用cloudra的官方yum源安装的,服务器是CentOS6.3 64位操作系统,自己写的mapreduce执行的时候hadoop会提示以下错误: WARN util.NativeCod ...

  9. 引入外部文件的时候为什么省略http:

    [摘要]相信很多时候大家在使用网上的实例代码的时候,需要引入外部文件,然而它们通常都是省略了http:,这是为什么呢? 先给大家看一个简单的小例子,引入外部jquery文件: <script s ...

  10. HDU1080(DP)

    我用的dp是n^3的, dp[i][j] 表示在s串的i个前和t串的j个前,s[i],t[j]为最末端的两个串得到的最大值. 状态转移方程为: 之前将s和t串最尾端添加'-' ;i<=n;i++ ...