zoukankan      html  css  js  c++  java
  • 初识函数

    本节内容:

      1.什么是函数

      2.函数定义, 函数名, 函数体以及函数的调⽤

      3.函数的返回值

      4.函数的参数

    一、什么是函数

      1、我们到⽬前为⽌, 已经可以完成⼀些软件的基础功能了. 那么我们来完成这样⼀个功能:约x

    print("拿出⼿机")
    print("打开陌陌")
    print("找个漂亮的妹⼦")
    print("问她, 约不约啊?")
    print("oK. ⾛你!")
    

      

      ok. so easy. 我们已经完成了对⼀个功能的描述. 那么问题来了. 我还想再约⼀次. 怎么办

      呢? 很简单. 再写⼀次就好了

    # 约⼀次
    print("拿出⼿机")
    print("打开陌陌")
    print("找个漂亮的妹⼦")
    print("问她, 约不约啊?")
    print("oK. ⾛你!")
    # 再来⼀次
    print("拿出⼿机")
    print("打开陌陌")
    print("找个漂亮的妹⼦")
    print("问她, 约不约啊?")
    print("oK. ⾛你!")
    

      

      OK. 也很简单. 但是. 我现在还想约. 约个10次8次的. 怎么办呢? 也简单. 加个循环就好了

    while 1:
     print("拿出⼿机")
     print("打开陌陌")
     print("找个漂亮的妹⼦")
     print("问她, 约不约啊?")
     print("oK. ⾛你!")
    

      哇, 终于可以不停的约了.但是呢, 想想. 这样写出来的程序. 是不是⼀直在约? ⼈啊. 要有节

      制. 有需求了再约, 这样比较好. 所以呢.这样写是不⾏的. 最好是我想什么时候约就什么时候
      约. 好了. 说到这. 我们可以这样做, 把约会这个事情啊, 先计划⼀下, 然后呢安排好流程. 在需

      要约的时候呢. 把这个约的流程拿出来执⾏⼀下就好了. 那么这⾥.我们可以先去定义⼀个事

      情或者功能. 等到需要的时候直接去⽤就好了. 那么这⾥定义的东⻄就是⼀个函数.

    二、函数的定义,函数名,函数体以及函数的调用

      我们使用def关键字来定义函数,函数的定义语法:

    def 函数名():
        函数体
    

      这⾥的函数名的命名规则和使⽤和变量基本⼀样.⾃⼰回顾⼀下变量的命名规则.

      函数体: 就是函数被执⾏之后要执⾏的代码

      

      来我们来定义一个约X功能:

    def yue():
     print("拿出⼿机")
     print("打开陌陌")
     print("找个漂亮的妹⼦")
     print("问她, 约不约啊?")
     print("oK. ⾛你!")


    调用:
    函数的调⽤: 使⽤函数名可以调⽤函数, 写法: 函数名(), 这个时候函数的函数体会被执⾏

    # 调⽤yue()函数
    yue()


    结果:
    拿出⼿机
    打开陌陌
    找个漂亮的妹⼦
    问她, 约不约啊?
    oK. ⾛你

      终于可以约了. 如果我还想约呢? 多次调⽤就可以了. 很⽅便. 

    # 调⽤yue()函数
    yue()
    yue()
    yue()
    yue()
    yue()
    

      

      继续分析. 约完了之后你需要得到⼀个结果吧. 比如. 约完了得到了⼀个萝莉, 少妇, ⼤妈.

      总得有个结果. 那么这个结果怎么来描述和获得呢? 这个就涉及到函数的返回值的问题.

    三、函数的返回

      执行完函数之后。我们可以使用return来返回结果。

      函数中return的使用

      1.函数 中遇到return,此函数结束,不再执行。

    def yue():
     print("约你")
     print("约我")
     print("约他")
     return
     print("约谁呀") # 这句话不会被执⾏
    yue()
    

      

      2.给函数的调用者一个访问结果

    def yue():
     print("约你")
     print("约我")
     print("约他")
     return "美⼥⼀枚"
    girl = yue()
    print(girl) # 美⼥⼀枚
    

      函数的返回值可以有多个结果

    def yue():
     print("约你")
     print("约我")
     print("约他")
     return "美⼥⼀枚", "萝莉⼀枚"
    girl = yue()
    print(type(girl)) # tuple
    

      

    总结一下:

      1. 遇到return. 此函数结束, 函数后⾯的东⻄将不会再执⾏

      2. return 返回值

      关于返回值:

            如果return什么都不写 或者 ⼲脆不写return .那么返回的就是None

            如果return后⾯写了⼀个值. 则调⽤者可以接收⼀个结果

            如果return后⾯写了多个结果, 则调⽤者可以接收⼀个tuple, 调⽤者可以直接解构成

            多个变量

      

      OK. 完美. 可以得到结果了. 但是我们的约的⽅式是不是有点⼉问题呢?, 陌陌现在还能约到
      么? 约不到了吧. 该换探探了. 那过两天探探也死掉了呢? 是不是还会有⼀个替代品. 那你想.
      有⼀个替代的. 你就需要去改⼀下代码. 是不是不太合适了. 最好的⽅式是不是想⽤什么约就
      ⽤什么约? ok. 我们可以通过函数的参数来给函数传递⼀些信息.

    四、函数的参数

      参数, 函数在调⽤的时候指定具体的⼀个变量的值. 就是参数. 语法:

    def 函数体(参数列表)
          函数体
    

      

      ⾸先我们先把代码该⼀下. 能够实现上⾯的需求.

    def yue(chat):
     print("拿出⼿机")
     print("打开"+chat)
     print("找个漂亮的妹⼦")
     print("约不约")
    yue("陌陌")
    yue("微信")
    yue("探探")
    

      perfect. 搞定了. 我们在调⽤yue的时候给chat⼀个值. 然后再执⾏函数体. 

      关于参数:

        1.形参:

        写在函数声明的位置的变量叫形参. 形式上的⼀个完整. 表⽰这个函数需要xxx

        2.实参:

        在函数调⽤的时候给函数传递的值. 叫实参, 实际执⾏的时候给函数传递的信息. 表⽰给函数

        xxx

        3.传参:

        给函数传递信息的时候将实际参数交给形式参数的过程被称为传参. 

    def yue(chat): # chat 形参
     print("拿出⼿机")
     print("打开"+chat)
     print("找个漂亮的妹⼦")
     print("约不约")
    yue("陌陌") # 实参
    len("字符串") # "字符串"在这⾥就是实参
    print("麻花藤") # "麻花藤"就是实参
    

      

      参数的分类:

        首先我们先看实参:

        位置参数

        约到这⾥了. 有没有想过这个问题. 啥样的都约么? 哪⾥的都约么? 不⼀定吧. 比如, 我在

        北京, 我很寂寞, 我喜欢⼩姐姐. 强哥, 在哈尔滨, 很寂寞, ⼤妈就⾏了. 需求是不⼀样的. ⽽我
        们现在的函数没有这些功能. 那怎么办呢? 很简单, 多来⼏个参数就好了。

    def yue(chat, address, age): # 形参
     print("拿出⼿机")
     print("打开"+chat)
     print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
     print("约不约")
    yue("微信", "北京", 18) # 实参
    

        分析: 在访问yue()的时候, 我们按照位置的顺序分别把"微信", "北京", 18 赋值给 chat,

        address, age. 在传参过程中. 系统会默认按照位置把实参赋值到形参.

       练习: 编写函数, 给函数传递两个参数a, b. 比较a, b的⼤⼩, 返回 a, b中最⼤的那个数

       答案:

    def my_max(a, b):
     if a > b:
     return a
     else:
     return b
    # 有点⼉麻烦, 我们在这⾥学⼀个三元运算符.
    def my_max(a, b):
     c = a if a > b else b # 当a>b成⽴返回a, 否则返回b
     return c
    

      

          关键字参数:

          位置参数好不好呢? 如果是少量的参数还算OK, 没有问题. 但是如果函数在定义的时候参

          数非常多怎么办? 程序员必须记住, 我有哪些参数, ⽽且还有记住每个参数的位置, 否则函数
          就不能正常调⽤了. 那则么办呢? python提出了⼀种叫做关键字参数. 我们不需要记住每个参
          数的位置. 只要记住每个参数的名字就可以了

    def yue(chat, address, age):
     print("拿出⼿机")
     print("打开"+chat)
     print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
     print("约不约")
    yue(chat="微信", age=18, address="北京") # 关键字参数. 
    

      

          混合参数:

          可以把上⾯两种参数混合着使⽤. 也就是说在调⽤函数的时候即可以给出位置参数, 也可
          以指定关键字参数

    # 混合参数
    yue("微信", age=18, address="上海") # 正确.第⼀个位置赋值给chat, 后⾯的参数开始
    指定关键字.
    yue(age="18", "微信", address="⼴州") # 错误, 最开始使⽤了关键字参数, 那么后⾯的
    微信的位置就串了, 容易出现混乱
    

      注意:在使⽤混合参数的时候, 关键字参数必须在位置参数后⾯

      综上: 在实参的⾓度来看. 分为三种:

        1.位置参数

        2.关键字参数

        3.混合参数,位置参数必须在关键字参数前面

      在形参角度看,一共分为三种,今天我们学习两种

        位置参数. 按照位置来赋值, 到⽬前为⽌, 我们编写的函数都是这种

    def yue(chat, address, age):
     print("拿出⼿机")
     print("打开"+chat)
     print("找个"+address+"附近漂亮的"+str(age)+"岁妹⼦")
     print("约不约")
    

        

        默认值参数. 在函数声明的时候, 就可以给出函数参数的默认值. 在调⽤的时候可以
        给出具体的值, 也可以不给值, 使⽤默认值.
        比如, 我们录入咱们班学⽣的基本信息. 通过调查发现. 我们班⼤部分学⽣都是男⽣. 这个时
        候就可以给出⼀个sex='男'的默认值

    def stu_info(name, age, sex='男'):
    print("录⼊学⽣信息")
    print(name, age, sex)
    print("录⼊完毕")
    stu_info("张强强", 18)
    

      注意,必须先声明位置参数,才能声明默认参数。

    综上:在形参的角度来看,

      1.位置参数

      2.默认参数(大多数传进来的参数都一样的,一般用默认参数)

  • 相关阅读:
    Visifire正式版(v1.1)发布
    [转]PSP机能强大!已能模拟运行WINDOWS系统?
    在Silverlight+WCF中应用以角色为基础的安全模式(一)基础篇之角色为基础的安全模式简介 Virus
    C#的加密解密算法,包括Silverlight的MD5算法 Virus
    MMORPG programming in Silverlight Tutorial (10)Implement the sprite’s 2D animation (Part IV)
    Game Script: Rescue Bill Gates
    MMORPG programming in Silverlight Tutorial (9)KeyFrame Animation
    MMORPG programming in Silverlight Tutorial (5)Implement the sprite’s 2D animation (Part II)
    MMORPG programming in Silverlight Tutorial (7)Perfect animation
    MMORPG programming in Silverlight Tutorial (3)Animate the object (Part III)
  • 原文地址:https://www.cnblogs.com/guchenxu/p/10079831.html
Copyright © 2011-2022 走看看