• python 3 基础之自定义函数


     函数

    1、什么是函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

    用人话来说就是:需要某块代码多次,为了提高编写的效率以及代码的重用,把具有独立功能的代码段组织为一个小模块,需要时就可以直接调用,这就是函数

    函数能提高应用的模块性,和代码的重复利用率

    Python 定义函数使用 def 关键字,一般格式如下:

    def 函数名(参数列表):
        ......    
        函数体
        ......
        return 返回值
    • def:表示函数的关键字
    • 函数名:函数的名称,日后根据函数名调用函数
    • 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
    • 参数:为函数体提供数据
    • 返回值:当函数执行完毕后,可以给调用者返回数据。
    • 其中参数和返回值不是必须的

      参考来自:https://www.cnblogs.com/saneri/p/10055615.html

    2、函数的定义和调用

    自定义一个函数,求和

    # 自定义一个函数求两个数 之和
    def my_func(a,b):
        return a + b
    # 调用函数
    f = my_func(3,88)
    # 打印结果
    print(f)

    运行结果:91

    • 每次调用函数时,函数会从头开始执行,当这个函数中的代码执行完毕,也意味着调用结束
    • 如果函数中执行到了return也会结束函数

    3、函数的参数

      3.1、实参和形参

    # 自定义一个函数求两个数 之和
    def my_func(a,b):
        return a + b
    # 调用函数
    f = my_func(3,88)

      其中,上面代码,定义时小括号中的参数,用来接收参数用的,称为 “形参”;调用时小括号中的参数,用来传递给函数用的,称为 “实参”

      3.2、按调用函数时参数的书写方式 分为:位置参数与关键字参数

      位置参数

    # 自定义一个函数求两个数 之和
    def my_func(a,b):
        return a + b
    # 调用函数时实参只输入一个
    f = my_func(3)

      上面代码运行时会报错,因为定义函数时有两个形参,而调用时只输入了一个实参

      结论:使用位置参数调用函数 需要注意实参的位置,实参的位置和形参的位置要一一对应,少传一个实参会报错

      

      关键字参数

    # 定义一个函数
    def my_print(name, age, no):
        print("我的名字:%s" % name)
        print("我的年龄:%d" % age)
        print("学号:%s" % no)
    # 使用关键字参数方式调用函数
    my_print(age=23,name='洗涤',no=1)

      调用函数的时候使用的是函数的形参名;若关键字参数与位置参数混合使用,需要让位置参数在前 ,关键字参数再后,某个参数使用了关键字参数,后面的都要使用关键字参数

      3.3、默认参数(缺省参数)

      默认参数即定义时给形参设置一个默认值,后面调用的时候这个参数就可以不写,直接取默认值;也可以后面把一个新的值给到此参数,调用时不给值则默认

    # 定义一个有默认参数的函数
    def my_print(name, no, age=20):
        print("我的名字:%s" % name)
        print("我的年龄:%d" % age)
        print("学号:%s" % no)
    # 调用函数
    my_print('小明','007')

      运行结果:

          我的名字:小明
          我的年龄:20
          学号:007

      此时调用函数时可以不写默认的那个参数,定义有默认参数的时候,需要把默认参数写在最后

      3.4、可变参数(可以实现函数定义,以及函数调用时,参数个数不匹配的情况)

        待补充..................

    4、函数的返回值(return+表达式)

      用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None

      4.1、单个返回值

    # 定义一个求和函数
    def smqh(a,b):
        re = a + b
        # 有一个返回值
        return re
    d = smqh(23,2)
    print(d)
    # 如果有一个return+数值,称之为这个函数有返回值

      4.2、多个返回值

    def my_func(score):
        if score < 0:
            print("您传入的分数有误!!!")
            # 函数的执行提前结束
            return
           #return后面没有值,什么都不返回,这是性能才考虑到的,因为分数小于0 ,后面的不需要再比较,无意义
        # 对分数进行判断
        if score >= 90:
            return ""
        elif score >= 80:
            return ""
        elif score >= 60:
            return ""
        elif score >= 0:
            return ""
        # 他不会执行 因为在前面已经执行了return
        print("测试")    

      return的作用:1、作为函数的返回值

              2、执行的函数提前结束(一个函数中可以有多个return语句,只要有一个return语句被执行到,这个函数就会结束了,因此后面的return没有什么用处)

    5、函数的嵌套

    # 写一个函数打印一条横线
    def p_one_d():
        print('-'*20)
    
    # 打印自定义函数的横线
    def p_line(num):
        for i in range(num):
            p_one_d()
    # 调用函数
    p_line(3)

      运行结果:

          --------------------
          --------------------
          --------------------

      函数p_one_d()嵌套在函数p_line()里面,调用函数p_line()时,p_line()函数多次调用了p_one(),这就是函数的嵌套调用

    6、函数的文档说明

      看文档说明需要用到python的内置函数help(),用来查看python函数的文档说明

      若自定义函数没有文档说明,使用help时默认会打印函数附近的注释

      其作用:1、可以在时间过了很久后 快速读懂自己的代码;2、便于工作的交接

      格式:help(函数名称)

    def sumhe(num1,num2):
        '''
        这是求和的
        :param num1:数字1
        :param num2: 数字2
        :return: 返回两个数字相加
        '''
        return num1 + num2
    help(sumhe)
    ================================================== 代码运行结果: sumhe(num1, num2) 这是求和的 :param num1:数字1 :param num2: 数字2 :
    return: 返回两个数字相加

    7、匿名函数

      在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便.(匿名函数没有函数名)
      匿名函数用关键字lambda定义
      7.1、定义普通函数和定义lambda函数的方法和区别:
    ###########普通函数#############
    # 定义一个普通求和函数
    def suma(a,b):
        return a + b
    print(suma(3,4))
    ###########lambda#############
    f = lambda a,b: a+b
    ret = f(3,2)
    print(ret)

      lambda的意义就是为了简洁的表达函数

      解释:lambda a,b : a + b

      冒号左边的lambda 相当于函数的名字(),a,b就是函数的形参;冒号右边的内容就是函数的返回值

      匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果

      7.2、把函数当做参数传递

    def sanf(a,b,c):
        print('a = %d' % a)
        print('b = %d' % b)
        print('result:%d' % c(a,b))#c是一个函数,当做参数来用
    f = lambda a,b : a + b
    sanf(1, 3, f)

      运行结果:

        a = 1
        b = 3
        result:4

  • 相关阅读:
    mongo相关
    grafana相关
    问题与解决
    蓝鲸社区版6.0填坑指南
    go环境
    docker相关
    gitlab相关
    LRU(Least recently used,最近最少使用)
    LRU:最近最久未使用
    学习大神笔记之 “MyBatis学习总结(一)”
  • 原文地址:https://www.cnblogs.com/will-wu/p/13238047.html
Copyright © 2020-2023  润新知