zoukankan      html  css  js  c++  java
  • 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")
  • 相关阅读:
    java web 自定义错误页面 完整jsp错误页面代码(同时写错误日志) error.jsp
    linux ps命令详解
    Cocos2d-x MultipleTouch & CCControllButton's confusion
    android 处理图片之--bitmap处理
    JBoss 目录结构
    如何将Android默认的Camra程序导入到eclipse中
    SGU107——987654321 problem
    解析Systemtap
    csdn 刷分小工具(刷了1000多被封了,慎用)
    OpenCV——基本图形绘制(椭圆、圆、多边形、直线、矩形)
  • 原文地址:https://www.cnblogs.com/wlyhy/p/10027590.html
Copyright © 2011-2022 走看看