美文网首页
Day9 函数

Day9 函数

作者: ChiAo1fei | 来源:发表于2019-01-04 19:09 被阅读0次

    函数

    1. 什么是函数

      函数就是对实现某一特定功能的代码段的封装

    2. 函数的分类

      系统函数:系统已经封装好,直接调用使用

      自定义函数:需要自己去定义

    3. 函数的定义/声明

      • 语法:

        def 函数名(参数列表):

        ​ 函数体

      • 说明:

        def - python中声明函数的关键字
        函数名 - 标识符,不能是关键字
        ​ PEP8命名规范,见名知意
        () - 固定格式
        参数列表 - 参数1,参数2,参数3...;这儿的参数叫形参
        ​ 定义的时候形参就是变量
        ​ 功能是将函数外面的数据传递到函数里
        : - 固定格式
        函数体 - 一个完整的函数体包含:函数说明文档,实现功能的代码段

      • 初学者声明函数的步骤(老司机绕行)
        第一步:确定函数功能
        第二步:根据函数功能确定函数名
        第三步:确定形参(是否需要参数,确定需要几个参数)
        看实现函数的功能需不需要从外边传值,以及需要传几个
        第四步:实现函数功能
        第五步:确定函数返回值

        注意:声明函数的时候不会执行函数体!只有在调用的时候才会中

    4. 函数的调用

      • 语法

        函数名(实参列表)

      • 说明
        函数名 - 这个函数名对应的函数必须是已经声明过的函数
        () - 固定写法
        实参列表 - 实参是用来给形参赋值的 - 传参
        ​ 实参和形参必须一一对应

      • 调用过程(重点)
        第一步:回到函数声明的位置
        第二步:实参赋值给形参(传参)
        第三步:执行函数体
        第四步:确定并返回返回值
        第五步:回到函数调用的位置,接着执行后面的代码

        # 练习 声明一个函数,获取并打印一个列表中指定元素对应的下标
        list1 = [1, 2, 3, 4, 5, 6, 1, 2, 3, 4]
        
        
        def inquire_index(list1: list, num1):
            for index in range(len(list1)):
                if list1[index] == num1:
                    print(index)
        
        
        inquire_index(list1, 2)
        # 打印N的阶乘
        
        
        def factorial_n(num):
            rpp = 1
            for i in range(1,num+1):
                rpp *= i
            print(rpp)
        
        
        factorial_n(10)
        

    函数中的参数

    1. 位置参数和关键字参数(根据实参的传递方式对参数进行的分类)
      • 位置参数:实参的位置和形参的位置保持一致,按形参声明的先后顺序一一赋值
      • 关键字参数:调用函数的时候以 形参 = 实参的方式来传参,这时候实参的顺序无所谓
    def func1(a, b, c):
        print(a, b, c)
    
    
    # 通过位置参数给形参赋值
    func1(10,20,30)
    # 通过关键字参数传参
    func1(c=30, a=10, b=20)
    # 通过位置参数和关键字参数结合传参(注意:位置参数在前面,关键字参数在后面)
    func1(10, 20, c=30) 
    
    1. 参数默认值
      声明函数的时候,可以给参数赋默认值。如果一个形参有默认值,那么调用函数的时候,这个参数就可以不用传参了
      如果有的形参有默认值,有的形参没有默认值,那么有默认值的形参要放在没有默认值形参的后面。调用参数要保证每个参数都有值

      # 参数c有默认值是,调用函数可以不用传参
      
      
      def func3(width=5, color='black', long=10):
          print('画一条长度是%d宽度是%d的%s线' % (long, width, color))
      
      
      func3()
      func3(color='red')
      
    2. 参数的类型说明 -- 类型说明只有提示的功能没有约束功能

      • 给参数设置默认值,默认值的类型就是参数的类型

      • 形参:类型名 在形参后面加:类型名(list,dict,tuple,set)。这种方式必须传参

      • 函数声明的()后面加 -> 类型名,来说明返回值的类型

      • 类型说明的好处: a.对实参的类型进行说明指导
        ​ b.实现函数功能的时候有类型相关的语法提示

        def list_item(list1, index=0) -> int:
            print(list1[index])
            return 10
        
        
        list_item([1,2,3])
        
        
        def func4(a: list, b: dict):
            a.append()
        
    3. 不定长参数 -- 函数参数个数不确定

      • 声明函数的时候在形参名前加,可以用来同时获取多个实参的值 -- 实质是将带的参数变成元组,将多个实参的值作为元组的元素

        注意:a.如果函数中既有不定长参数,又有普通参数,那么不定长参数必须放在普通参数的后面
        ​ b.两个的参数要放在一个的后面

        # 计算多个数的和
        def num_sum(*nums):
            print(nums)
        
        def func5(name, *scores):
            print(name, scores)
        
        func5('郭锐', 90,20,53)
        
        num_sum(10, 20, 30)
        num_sum(20, 30, 40, 50)
        
      • 在形参前加两个* -- 必须用关键字参数,对应的关键字作为key,而值作为value,从而形成一个字典

        def func6(**nums):
            print(nums)
        
        func6(a=10, b=20)
        func6()
        
        # 写一个函数,计算多个数的和(要求可以使用位置参数,也可以使用关键字参数)
        def all_num_sum(*args, **kwargs):
            sum1 = 0
            for item in args:
                sum1 += item
            for key in kwargs:
                sum1 += kwargs[key]
            print('和为%d' % sum1)
        
        
        all_num_sum(10, 20, a=30, b=40)
        

    函数中的返回值

    1. 什么是返回值 - 返回值就是将函数里面的数据传递到函数外面

      • 就是函数调用表达式的值,就是return 关键字后面的表达式的值

      • python中每个函数都有返回值,默认为None
        ​ 函数调用表达式 - 调用函数的语句
        return - 关键字,只能写在函数体中。 功能:1:确定函数的返回值 2.结束函数
        ​ 执行函数的时候,如果遇到return,函数直接结束,并且将return后面的值作为返回值
        回到函数调用的位置(这个时候函数对奥用的表达式的值就是函数的返回值)

        函数调用过程
        回到函数声明位置
        传参 - (保证每个参数都有值)
        执行函数体
        执行完函数确定返回值 -- 如果执行过程中没有遇到return,函数的返回值为None
        ​ 遇到return,return后面是什么,返回值就是什么

      def func1():
          print('*******')
          return 0
          print('=======')
      
      
      result = func1()        #func1()就是函数调用表达式
      print(result)
      
      
      def func2():
          print(100)
      
      
      print(func2())          # 先打印100,然后打印None ,先执行函数,再打印返回值
      
    2. 多个返回值
      return 值1,值2,值3 <==> (值1,值2,值3.···)

      def func3():
          return 1,2,3
      
      
      x,y,z = func3()
      print(x,y,z)
      

    相关文章

      网友评论

          本文标题:Day9 函数

          本文链接:https://www.haomeiwen.com/subject/rdikrqtx.html