1. 元组形式

def test1(*args):

    print('################test1################')
print(type(args))
print(args)

正确调用:

test1(1, 2)          #args在函数体内部为tuple类型

错误调用:

test1(1, b=2)      #TypeError: test1() got an unexpected keyword argument 'b'
test1(a=1, b=2)  #TypeError: test1() got an unexpected keyword argument 'a'
test1(a=1, 2)      #TypeError: test1() got an unexpected keyword argument 'a'

2. 字典形式

def test2(**kargs):

    print('################test2################')
print(type(kargs))
print(kargs)

正确调用:

test2(a=1, b=2)  #kargs在函数体内部为dict类型

错误调用:

test2(1, 2)          #TypeError: test2() takes exactly 0 arguments (2 given)
test2(1, b=2)      #TypeError: test2() takes exactly 0 arguments (2 given)
test2(a=1, 2)      #SyntaxError: non-keyword arg after keyword arg

3. 混合形式

def test3(*args, **kargs):

    print('################test3################')
print(type(args))
print(args)
print(type(kargs))
print(kargs)

正确调用:

test3(1, 2)          #args在函数体内部为tuple类型,kargs为空dict类型
test3(1, b=2)      #args在函数体内部为tuple类型,kargs为dict类型
test3(a=1, b=2)  #args在函数体内部为空tuple类型,kargs为dict类型

错误调用:

test3(a=1, 2)      #SyntaxError: non-keyword arg after keyword arg

4. 其他形式1

def test4(a = ()):

    print('################test4################')
print(type(a))
print(a)

正确调用:

test4((1, 2))        #a在函数体内部为tuple类型

test4(a=(1, 2))    #a在函数体内部为tuple类型

test4((1,))          #a在函数体内部为tuple类型

test4(a=(1,))      #a在函数体内部为tuple类型

test4((1))           #a在函数体内部为int类型,非tuple类型

test4(a=(1))       #a在函数体内部为int类型,非tuple类型

test4(1)             #a在函数体内部为int类型,非tuple类型

test4(a=1)         #a在函数体内部为int类型,非tuple类型

错误调用:

test4(1, 2)          #TypeError: test4() takes at most 1 argument (2 given)

test4(1, b=2)      #TypeError: test4() got an unexpected keyword argument 'b'

test4(a=1, b=2)  #TypeError: test4() got an unexpected keyword argument 'b'

5. 其他形式2

def test5(b = {}):

    print('################test5################')
print(type(b))
print(b)

正确调用:

test5({'a':2})       #b在函数体内部为dict类型

test5(b={'a':2})

test5({'a':2,'b':3})#b在函数体内部为dict类型

test5(b={'a':2,'b':3})

test5(b=2)           #b在函数体内部为int类型,非dict类型

错误调用:

test5(a=1, b=2)   #TypeError: test5() got an unexpected keyword argument 'a'

test5(1, 2)           #TypeError: test5() takes at most 1 argument (2 given)

test5(1, b=2)       #TypeError: test5() got multiple values for keyword argument 'b'

6. 其他形式3

def test6(a = (), b = {}):

    print('################test6################')
print(type(a))
print(a)
print(type(b))
print(b)

正确调用:

test6(1, 2)

test6(a=1, b=2)

test6(a=1, b=2)

test6((1, 2), {'c':8})

test6({'c':8})

test6(b={'c':8})

test6((1, 2), b=2)

test6((1, 2), b=2)

错误调用:

test6(a=1, 2)       #SyntaxError: non-keyword arg after keyword arg

test6(1, 2, b=2)   #TypeError: test6() got multiple values for keyword argument 'b'

关于不定参数函数中使用传入参数调用其他固定参数函数的使用请移驾至:http://www.cnblogs.com/doudongchun/p/3704123.html

Python不定参数函数的更多相关文章

  1. Python 不定参数函数

    1. 元组形式 def test1(*args): print('################test1################') print(type(args)) print(arg ...

  2. 不定参数函数原理以及实现一个属于自己的printf函数

    一.不定参数函数原理 二.实现一个属于自己的printf函数 参考博文:王爽汇编语言综合研究-函数如何接收不定数量的参数

  3. c++不定参数函数

    不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多.除了格式化输出之外,我实在没看到多少应用.主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替 ...

  4. Python可变参数函数用法详解

    来自:http://c.biancheng.net/view/2257.html 很多编程语言都允许定义个数可变的参数,这样可以在调用函数时传入任意多个参数.Python 当然也不例外,Python ...

  5. python 可变参数函数定义* args和**kwargs的用法

    python函数可变参数 (Variable Argument) 的方法:使用*args和**kwargs语法.其中,*args是可变的positional arguments列表,**kwargs是 ...

  6. GO语言练习:不定参数函数

    1.代码 2.运行 1.代码 package main import "fmt" func MyPrintf(args ...interface{}){ for _, arg := ...

  7. PYTHON不定参数与__DOC__

    def total(initial = 5, *numbers, **keywords): count = initial for number in numbers: count += number ...

  8. oc自定义不定参数函数

    -(void)getValueFormConfig:(NSString *)key,... or -(void)getValueFormConfig:(NSString *)key,...NS_REQ ...

  9. UE3多参数函数实现

    基础宏定义 #define VARARG_EXTRA(A) A, #define VARARG_NONE #define VARARG_PURE =0 static inline DWORD Chec ...

随机推荐

  1. echarts地图使用

    在使用echarts3当中,地图需要的数据时分开的,需要自己下载,而在echarts3官网上的地图数据只有全国.中国.各省的地图 如果我们需要使用更详细的地图,需要在echarts2的生成需要的地级市 ...

  2. 用命令打开本地tomcat服务器

    1.点击开始菜单,搜索cmd,默认第一个结果是cmd.exe, 鼠标右键用管理员权限打开(win7及以上版本系统) 启动命令是net start tomcat8 (我电脑是tomcat8,如果是tom ...

  3. sqlserver服务启动后停止,传递给数据库 'master' 中的日志扫描操作的日志扫描号无效

    电脑异常重启,导致SqlServer服务启动后,自动停止,在[计算机管理]-[事件查看器]-[windows日志]中进行查看系统错误日志,在[应用程序]下发现可能的错误信息有以下两条: 1.错误:传递 ...

  4. STL整理之map

    转载请注明出处,部分内容引自李煜东<算法竞赛进阶指南> 前置知识:    C++.C语言入门 Map是什么 Map是从键(key)到值(value)的映射,其内部实现是一棵以key为关键码 ...

  5. 使用fidder进行接口测试

    官方下载地址 下载后一路next安装即可. get请求 get请求直接把需要携带的参数使用?跟在后面如:http://127.0.0.1:8000/api/get_event_list/?id=1 p ...

  6. Linux学习笔记:scp远程拷贝文件

    scp是secure copy的简写,用于Linux下进行远程拷贝文件的命令,类似的有cp,不过cp仅在本机上进行拷贝不能跨服务器. 命令格式: scp [参数] [原路径] [目标路径] -q 不显 ...

  7. 2017-2018-2 20155225《网络对抗技术》实验八 Web基础

    2017-2018-2 20155225<网络对抗技术>实验八 Web基础 1.Web前端HTML 输入命令apachectl start打开apahce,并使用netstat -aptn ...

  8. 状压dp-----三进制

    三进制的状压dp要先预处理3^n以及每一个数的每一位 例题 hdu3001 题意: 给定n 个城市已经 m 条路 以及对应路费 c,要求遍历所有城市最少的路费,每个城市不能超过2次. 题解: 看代码吧 ...

  9. HDU5818 Joint Stacks 左偏树,可并堆

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - HDU5818 题意概括 有两个栈,有3种操作. 第一种是往其中一个栈加入一个数: 第二种是取出其中一个栈的顶 ...

  10. BZOJ1088 [SCOI2005]扫雷Mine 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1088 题意概括 扫雷.只有2行.第2行没有雷,第一行有雷.告诉你第二行显示的数组,问有几种摆放方式 ...