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

浙公网安备 33010602011771号