函数的不定长参数

# *args:位置参数,收集成元组
def func1(*args):
    print(args)
    for i in args:
        print(i)

func1('python', 28, 'man', 'meiguo')

# **kwargs :收集关键字参数,合并字典
def func2(**kwargs):
    print(kwargs)
    for key, value in kwargs.items():
        print(key)
        print(value)

func2(name='python', age=28, sex='man', weizhi='helan')


def fun(a, b, *args, **kwargs):
    """可变参数演示示例"""
    print("a =%d" % a)
    print("b =%d" % b)
    print("args:")
    print(args)
    print("kwargs: ")
    for key, value in kwargs.items():
        print("value=%s" % value)

print("-fu-"*10)
c = (3, 4, 5)
d = {"m": 6, "n": 7, "p": 8}  # 传入元组和字典时应该注意加*号,如果不加就当做普通的不定长参数处理
fun(1, 2, *c, **d)  # 就算不定长形参也是元组,那么会变成给实参的这个元组变成不定长形参的第一个位置
fun(1, 2, c, d)     # 生拉硬凑一个元组,加个逗号((),)这样。,字典,必须要加双*
                    # 所以以后给不定长形参传入元组和字典一定记得*号
# 缺省参数在*args后面
print('-fun-'*10)
def sum_nums_3(a, *args, b=22, c=33, **kwargs):
    print(a)
    print(b)
    print(c)
    print(args)
    print(kwargs)

sum_nums_3(100, 200, 300, 400, 500, 600, 700, b=1, c=2, mm=800, nn=900)
# 如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 *args的后面
# 但如果有**kwargs的话,**kwargs必须是最后的
# 加了星号(*)的变量args会存放所有未命名的变量参数,args为元组
# 而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python中文社区

Python标准库(1) — itertools模块

專 欄 ❈Jerry,Python中文社区专栏作者。 blog:https://my.oschina.net/jhao104/blog github:ht...

2119
来自专栏武军超python专栏

2018-7月19日系统模块字符串操作

每天遇到的新单词: recursion   n:递归 objece      n:对象 maximum     adj:最大值 exceed      ...

1203
来自专栏章鱼的慢慢技术路

C语言中的字符串处理库函数介绍与实现

1202
来自专栏散尽浮华

python基础随笔

一: 作用域 对于变量的作用域,只要内存中存在,该变量就可以使用。 二:三元运算 name = 值1 if 条件 else 值2 如果条件为真:result =...

2159
来自专栏前端儿

PHP--正则表达式和样式匹配--小记

POSIX 风格的,有些低版本软件支持,目前高版本的有些已经废弃不用了,比如 zend studio 的较新版本.

1611
来自专栏五毛程序员

C++知识点整理——持续更新

2144
来自专栏王磊的博客

es6分享——变量的解构赋值

变量的解构赋值:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 以前的写法: var a = 1;...

2837
来自专栏浪淘沙

Python学习总结3--Python基础

    a = 100 if a >= 0:     print(a) else:     print(-a) 其中,#为注...

1011
来自专栏天天

javascript变量和操作符

813
来自专栏小古哥的博客园

正则表达式

特殊符号(使用需要'\'转义) ! $ ^ * + = | . ? \ / ( ) [ ] { } 创建正则表达式 方法一  var re =new RegEx...

3535

扫码关注云+社区

领取腾讯云代金券