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)

  

args *args **kwargs区别的更多相关文章

  1. python函数可变参数*args和**kwargs区别

    #*args(元组列表)和**kwargs(字典)的区别 def tuple_test(*args): for i in args: print 'hello'+i s=('xuexi','mili' ...

  2. python中的*args和** kwargs区别

    写了几个月的oython了总感觉除了if else for while什么都不太会,看了架构师的代码参数传递总是使用*args,**kwargs,一直搞不太明白,只是模仿着用,最近有时间想系统的学习一 ...

  3. python 中 *args he **kwargs的区别

    ''' 一 *args 和 **kwargs 的区别? *args 表示任意个 无名参数, 类型是元祖 tuple. **kwargs 表示的是关键字的参数 传入的参数是 dict 类型. 当*和** ...

  4. python 中的 args,*args,**kwargs的区别

    一.*args的使用方法 *args 用来将参数打包成tuple给函数体调用 例子一:def function(*args):      print(args, type(args))function ...

  5. python 中 *args 和 **kwargs 的区别

    在 python 中,*args 和 **kwargs 都代表 1个 或 多个 参数的意思.*args 传入tuple 类型的无名参数,而 **kwargs 传入的参数是 dict 类型.下文举例说明 ...

  6. *args和**kwargs的区别

    *args和**kwargs表示可变长度的参数. *args是元组类型: **kwargs是字典类型: 注意:arg.*args.**kwargs三个参数的位置必须是固定的,否则会报错.

  7. Python中*args和**kwargs的区别

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 中秋的夜,微凉,但却始终看不见月亮. 我想,它一定是害羞了,悄悄的躲到了乌云的后面. 嗯,就是这样,我真是太TM机智了. 正 ...

  8. Python中 *args 和 **kwargs 的区别

    先来看个例子: def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '----------- ...

  9. *args 和 **kwargs 的区别

    截取百度里的两个答案: 这是Python函数可变参数 args及kwargs *args表示任何多个无名参数,它是一个tuple **kwargs表示关键字参数,它是一个dict 测试代码如下: de ...

随机推荐

  1. [BZOJ5288][HNOI2018]游戏(拓扑排序)

    传送门:https://www.luogu.org/problemnew/show/P4436 20分的暴力加一个Random_shuffle就A了.我还能说什么.. 不过这个也不是毫无道理,复杂度应 ...

  2. Oracle提示密码快过期的解决办法

    今天在使用ORACLE时报出如下错误:ORA-28002: the password will expire within 7 days================================ ...

  3. 每天一个liunx命令2之rz和sz命令

    1安装命令工具包     yum install lrzsz   2sz命令发送文件到本地(send): sz filename 3rz命令本地上传文件到服务器(receive): rz 执行该命令后 ...

  4. Visio对象插入Word后周围空白过大

    如图,空白很大,因为我在设计里选择纸张适应绘图,后发现直接复制粘贴到word就好了,没空白了.

  5. C#练习DataReader(转载)

    本文转自http://www.cnblogs.com/Mysterious/p/3422901.html SQL代码: create database ThreeDb go USE ThreeDb; ...

  6. NSPredicate 应用 --数组如何一键去重,如何一行代码筛选,请慢慢看来

    1.去重 NSArray * uniqueVarValueArray= [origArray valueForKeyPath:@"@distinctUnionOfObjects.VarKey ...

  7. Using xcodebuild To Export a .ipa From an Archive

    Xcode 6 changes how you export a .ipa from an archive for adhoc distribution. It used to be that you ...

  8. VUE -- 不推荐使用jQuery

  9. java 中的VO,PO,DTO,DO对象

    经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应于页面上需要显示的数据(表单),DO对应 ...

  10. GTK+重拾--09 GTK+中的组件(一)

    (一):写在前面 在这篇文章中主要介绍了GTK+程序中的各种构件,这是解说构件的第一个部分,另外一部分将在下一个小节中讲到. 构件是建立一个GUI程序的基础.在GTK+的长期发展过程中.一些特定的构件 ...