python之函数(二)

上一篇中我们在函数体中的写的都是打印语句,用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 def add(a,b):
 9     return a+b
10 
11 add(1,2)

发现这样控制台啥都没有,这是怎么回事呢?其实结果已经返回了,但是我们看不到,是因为没有用变量去接收这个结果。那我们用变量接收,再打印这个变量。

1 def add(a,b):
2     return a+b
3 
4 result = add(1,2)
5 print(result)

这次可以看到结果出来了。

关于return,函数外部想获得函数结果,必须用return。return之后的语句都不会再执行,注意啊。

练习:

 1 def make_album(singerName,album):
 2     album_info={
 3         "name":singerName,
 4         "album":album
 5      }
 6     return album_info
 7 
 8 # album = make_album("刘德华","冰雨")
 9 # print(album)
10 
11 count = 0
12 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 in args:
        result*=i
    return result

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=0
10     sum=a+b+c
11     print(sum)
12     for item in args:
13         result+=item
14     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 case1
11 """
12 # count=0
13 # def order(*args):
14 #     print("顾客您好,您点了如下配菜:")
15 #     for item in args:
16 #         print(item, end=" 
")
17 #     print("
")
18 #
19 #
20 # order("生菜", "面包", "热狗", "鸡腿")
21 # order("生菜","面包","热狗")
22 # order("生菜","面包")
23 
24 """
25 case2
26 """
27 def make_car(maker,model,**kwargs):
28     print("您的爱车制造商是:"+maker)
29     print("您爱车的型号是:"+model)
30     for k,v in kwargs.items():
31         print("您爱车的%s是%s" %(k, v))
32 
33 make_car('subaru','outback',color="blue",tow_package="True")
原文地址:https://www.cnblogs.com/wlyhy/p/10027590.html