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)

 

  

posted @ 2018-07-10 09:38  池偏一  阅读(387)  评论(0编辑  收藏  举报