ZMAN的学习笔记之Python篇:函数“可变长参数”

 

ZMAN的学习笔记之Python篇:

  1.装饰器

  2.函数“可变长参数”

  3.命令行解析

 

 注:本文全原创,作者:ZMAN  (http://www.cnblogs.com/zmanone/)

 

  这次来聊聊Python中函数的“可变长参数”,在实际中经常会用到哦~

 

 一、什么是“可变长参数”

  “可变长参数”就是向一个函数传入不定个数的参数。比如我写一个函数:传入一个学生参加各科目考试的成绩,求平均分,如两个学生分别传入(92, 91, 88)和(88, 95),因为每个学生参加的考试个数不同,因此传入的参数个数也就不同了,遇到这种情况,我们在定义函数的时候,可以使用“可变长参数”。

 

二、在定义函数时使用“可变长参数”

 

# 完整打印函数的可变参数

def func(*args, **kwargs):

    print(args)

    print(kwargs) 





func(1, 'hello', a=2, c='world')





>>>

(1, 'hello')

{'a': 2, 'c': 'world'}

  

  以上代码定义了一个最简单的分别接收两种“可变长参数”的函数,一种是“非关键字参数”,数据结构为:元组注:元组不能被修改);另一种是“关键字函数”,数据结构为:字典

  此时,我们就可以依次传入数个非关键字参数和数个关键字参数,不能混搭传入~我们可以用如下这段代码依次打印出接收到的参数:

# 依次打印函数的可变参数

def func(*args, **kwargs):

    for arg in args:

        print('arg:', arg)

    for value in kwargs:

        print('%s:' % value, kwargs[value])





func(1, 'hello', a=2, c='world')





>>>

arg: 1

arg: hello

a: 2

c: world

 

三、在调用函数时使用“可变长参数”

  我们也可以在调用函数时传入一个“可变长参数”,如下所示:

 

def func(name1, name2, name3):

    print('第一个人:%s' % name1)

    print('第二个人:%s' % name2)

    print('第三个人:%s' % name3)





name_tuple1 = ('Mary', 'John', 'Jane')

name_tuple2 = ('Rose', 'Mike')

func(*name_tuple1)

func('Luna', *name_tuple2)





>>>

第一个人:Mary

第二个人:John

第三个人:Jane

第一个人:Luna

第二个人:Rose

第三个人:Mike

 

  在这段代码中,我定义func函数的参数个数为3,所以请确保在调用该函数时传入的参数数量也是3哟~

 

四、实际应用

#:假设传入一个班级的名字、班级所获荣誉,以及各位任课老师的名字和年龄

def welcome(name, *args, **kwargs):

    print('%s共获得了%d项荣誉,分别是:' % (name, len(args)))

    for i in range(len(args)):

        print('%d. %s' % (i+1, args[i]))



    age_sum = 0  # 年龄和

    print('该班共有%d名老师,他们的名字和年龄如下:' % len(kwargs))

    for value in kwargs:

        age_sum += kwargs[value]

        print('%s: %d岁' % (value, kwargs[value]))

    print('老师们的平均年龄是%.1f岁\n' % (age_sum/len(kwargs)))





welcome('计算机1班', '校优秀班级', '最佳凝聚力', Mary=27, Peter=35, John=32)

welcome('软件2班', '上海市优秀班级', '校合唱比赛冠军', '最佳凝聚力', Peter=34, Rose=28, Hans=33)





>>>

计算机1班共获得了2项荣誉,分别是:

1. 校优秀班级

2. 最佳凝聚力

该班共有3名老师,他们的名字和年龄如下:

Peter: 35岁

John: 32岁

Mary: 27岁

老师们的平均年龄是31.3岁



软件2班共获得了3项荣誉,分别是:

1. 上海市优秀班级

2. 校合唱比赛冠军

3. 最佳凝聚力

该班共有3名老师,他们的名字和年龄如下:

Peter: 34岁

Rose: 28岁

Hans: 33岁

老师们的平均年龄是31.7岁

  

  这个例子也是自己编的,能帮助大家理解主题内容就好~

你可能感兴趣的:(python)