上一篇中我们在函数体中的写的都是打印语句,用print来输出打印结果。但是在实际使用的时候,我们并不需要将结果输出在控制台上。这时候该如何解决呢?
1. return返回值。
我们可以将函数的结果通过return返回出来。Let's have a try!
1 #!/usr/bin/python3
2 #-*- coding: utf-8 -*-
3 #@Time :2018/11/27 14:40
4 #@Author :yosef
5 #@Email :wurz529@foxmail.com
6 #@File: :class17.py
7 #@Software :PyCharm Community Edition
8 defadd(a,b):9 return a+b10
11 add(1,2)
发现这样控制台啥都没有,这是怎么回事呢?其实结果已经返回了,但是我们看不到,是因为没有用变量去接收这个结果。那我们用变量接收,再打印这个变量。
1 defadd(a,b):2 return a+b3
4 result = add(1,2)5 print(result)
这次可以看到结果出来了。
关于return,函数外部想获得函数结果,必须用return。return之后的语句都不会再执行,注意啊。
练习:
1 defmake_album(singerName,album):2 album_info={3 "name":singerName,4 "album":album5 }6 returnalbum_info7
8 #album = make_album("刘德华","冰雨")
9 #print(album)
10
11 count =012 while count<3:13 name = input("请输入歌手名:")14 album = input("请输入专辑名:")15 result =make_album(name, album)16 print(result)17 count+=1
结果:
2. 动态参数
有的时候,需要往函数内部传递不一定数量的参数,此时,之前的函数就不太适用了。传入的参数其实是一个元组。无论传递多少个参数,都会把参数存储到一个元组里面。
def func(*args)
print(args)
func(1,2,3,4,5,6)
做一个简单的累乘,代码如下:
def result(*args):
result=1
for i inargs:
result*=ireturnresult
a= result(5,6,9,5,3,6)print(a)
**kwargs:(表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现)。与*args相比,带有关键字且必须制定关键字,否则识别不了。通过**kwargs传入的是字典。*args传入的是元组。
1 def func(**kwargs):2 print(kwargs)3
4 func(a=1,b=2,c=3)
3. 位置参数,默认参数,动态参数以及关键字动态参数混合使用实例
1 #!/usr/bin/python3
2 #-*- coding: utf-8 -*-
3 #@Time :2018/11/27 16:33
4 #@Author :yosef
5 #@Email :wurz529@foxmail.com
6 #@File: :class20.py
7 #@Software :PyCharm Community Edition
8 def func(a,b=2,c=3,*args,**kwargs):9 result=010 sum=a+b+c11 print(sum)12 for item inargs:13 result+=item14 print(result)15 print("关键字动态参数是:",kwargs) #不能用+连接,因为kwargs是字典
16
17 func(88,56,23,1,2,3,6,9,y="China",o="NB") #这个a=88,b=56,c=23,args=(1,2,3,6),kwargs=["y":China,"o":"NB"]
习题:
1 #!/usr/bin/python3
2 #-*- coding: utf-8 -*-
3 #@Time :2018/11/27 16:42
4 #@Author :yosef
5 #@Email :wurz529@foxmail.com
6 #@File: :class21.py
7 #@Software :PyCharm Community Edition
8
9 """
10 case111 """
12 #count=0
13 #def order(*args):
14 #print("顾客您好,您点了如下配菜:")
15 #for item in args:
16 #print(item, end=" \n")
17 #print("\n")
18 #19 #20 #order("生菜", "面包", "热狗", "鸡腿")
21 #order("生菜","面包","热狗")
22 #order("生菜","面包")
23
24 """
25 case226 """
27 def make_car(maker,model,**kwargs):28 print("您的爱车制造商是:"+maker)29 print("您爱车的型号是:"+model)30 for k,v inkwargs.items():31 print("您爱车的%s是%s" %(k, v))32
33 make_car('subaru','outback',color="blue",tow_package="True")