Python函数参数*args和**kwargs
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的更多相关文章
- Python可变参数*args和**kwargs
本文我们将通过示例了解 Python函数的可变参数*args和 **kwargs的用法. 知识预备:Python 函数和 Python 函数参数 在Python编程中,我们定义一个函数来生成执行类似操 ...
- Python函数中*args和**kwargs来传递变长参数的用法
参考自: http://www.jb51.net/article/78705.htm 单星号形式(*args)用来传递非命名键可变参数列表.双星号形式(**kwargs)用来传递键值可变参数列表. 1 ...
- Python中函数参数 *args 和 **kwargs
普通参数,即在调用函数时必须按照准确的顺序来进行参数传递. 默认参数,即参数含有默认值,在调用函数时可以进行参数传递,若没有进行参数传递则使用默认值,要注意,默认参数必须在普通参数的右侧(否则解释器无 ...
- python函数参数*args **kwargs
毕业多年,把C++都就饭吃了....今天居然在纠结什么是形参什么是实参..... 定义函数里面写的参数就是形参,因为没有内存占用,实际调用时写的参数就是实参,因为有内存占用和传值 然后就是位置参数,可 ...
- Python函数可变参数*args及**kwargs详解
初学Python的同学们看到代码中类似func(*args, **kwargs)这样的函数参数定义时,经常感到一头雾水. 下面通过一个简单的例子来详细解释下Python函数可变参数*args及**kw ...
- 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)
详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类 Python中函数参数定义及调用函数时传参 ...
- 理解 Python 中的可变参数 *args 和 **kwargs:
默认参数: Python是支持可变参数的,最简单的方法莫过于使用默认参数,例如: def getSum(x,y=5): print "x:", x print "y:& ...
- python可变参数*args, **kwargs
python可变参数*args, **kwargs def foo(* args, ** kwargs): print ' args = ', args print ' kwargs = ', k ...
- python函数参数的pack与unpack
python函数参数的pack与unpack 上周在使用django做开发的时候用到了mixin(关于mixin我还要写一个博客专门讨论一下,现在请参见这里),其中又涉及到了一个关于函数参数打包(pa ...
随机推荐
- 人脸验证算法Joint Bayesian详解及实现(Matlab)
python http://blog.csdn.net/cyh_24/article/details/49059475 github https://github.com/johnnyconstant ...
- Ubuntu Python 安装numpy SciPy、MatPlotLib环境
安装 sudo apt-get install python-scipysudo apt-get install python-numpysudo apt-get install python-mat ...
- 【SPOJ】8222. Substrings(后缀自动机)
http://www.spoj.com/problems/NSUBSTR/ 题意:给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值.求F(1)..F(Length(S)) 这题 ...
- when case group by 的用法集合
1.用那个以前大家都熟悉的例子,要求是依旧下面的表格求每个大洲的人口总和 国家(countrcoungry) 人口(population) 中国 600 美国 100 加拿大 100 英国 200 法 ...
- 当springMVC 容器初始化完成后执行某个方法
分类: spring java2013-06-19 16:40 8289人阅读 评论(4) 收藏 举报 在某些应用中,我们希望,当spring 容器将所有的bean都初始化完成后,做一个操作(例如:将 ...
- Boost-date_time库学习
最近开了boost库的学习,就先从日期-时间库开始吧,boost的date_time库是一个很强大的时间库,用起来还是挺方便的. 以下代码只是入门级的简单学习,更详细的资料参考boost源码. C+ ...
- C++关键字之const(整理!)
C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
- Jfinal报错sql injection violation, multi-statement not allow
Jfinal报错: com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: sql injection ...
- js的等于号==的判断
var str=0; str == "" 将返回true:
- java如何发起一次http的post请求?
@RequestMapping(value = "loginInSSO", method = RequestMethod.GET) public String loginInSSO ...