args *args **kwargs区别
python 函数中的参数类型有两种,分别为 位置参数和关键字参数:
一 、位置参数(该类参数位置固定不变)
args: 表示默认位置参数,该参数是具象的,有多少个参数就传递多少参数,且参数位置和定义时一致,数目不统一会报错,可以随意命名,参数数据类型和传递时给定的数据类型一致。
*args: 表示可变位置参数,该参数位置和传递时保持一致,但是可变的,可以有,可以无,参数传递到一个元组中。
二、关键字参数
**kwargs: 表示可变关键字参数,该参数可以传递0个或多个,可有可无,参数传递到一个字典中,以键值对形式存在。
综合示例:
#!/usr/bin/env python # -*- coding:utf-8 _*- __author__ = '池偏一' ''' @author:shz @license: Apache Licence @file: testargs.py @time: 2018/06/19 @site: @software: PyCharm ''' import sys reload(sys) sys.setdefaultencoding('utf-8') class TestArgs(object): def default_args(self, x, y): print x, y print type(x), type(y) def variable_args(self, *args): print args print type(args) def variable_kwargs(self, **kwargs): print kwargs print type(kwargs) def allargs(self, x, *args, **kwargs): print x print args print kwargs if __name__ == '__main__': ts = TestArgs() try: ts.default_args() except TypeError: print "默认参数形式请传递相对应参数" ts.default_args('123', 45) print '-*-' * 5 ts.variable_args() ts.variable_args(1, 3) ts.variable_args(123, '456', 789, 'aaaaa') print '-*-' * 5 ts.variable_kwargs() ts.variable_kwargs(x='aaa', y=123) ts.variable_kwargs(a=1, b=2, c=3, d='qqq', e='www', f='rrr') print '-*-' * 5 ts.allargs('111') ts.allargs('111', 'aaa', 444) ts.allargs('111', a='2342', b=234)
请查看新博客:www.vhosts.cn