美文网首页
004-函数

004-函数

作者: 痞子_4ae7 | 来源:发表于2020-05-14 11:45 被阅读0次

    函数介绍

    • 函数概念
    一般情况下,某段代码需要反复使用多次,
    而且这段代码又具备特定的功能,
    我们会把这段代码组织成为单独的功能模块,
    这个功能模块就可以叫做函数
    
    • 函数的定义和调用

      • 函数的定义(函数可以重复调用,不能重复定义)
      语法格式:
      def  函数名():
          代码块...
      
      • 函数的调用
      调用格式:
      函数名()
      
    • 练习 封装函数打印99乘法表:

    # 函数的定义
    def show99():
        i = 1
        while i < 10:
            j = 1
            while j <= i:
                print("%d * %d = %d\t"%(j,i,i*j),end=" ")
                j += 1
            i += 1
            print("")
            # 函数的调用,只有调用函数,函数中的代码才会被执行
    show99()
    
    • 函数的文档说明
    使用help(自定义方法名) 可以查看函数的文档说明
    help(show99)
    显示结果:
    Help on function show99 in module __main__:
    show99()
        # 函数的定义: 打印99乘法表
    

    函数的参数

    • 定义带有参数的函数
    语法格式:
    def 方法名(形参...):
        代码块(带代码中,形参可以被理解为定义好的一个变量)
    
    • 带参数的函数的调用
    方法名(实际参数)
    注意:参数的个数要匹配
    
    • 练习 :
    定义可以完成三个数字求和的方法,求从键盘录入的三个数字的和
    

    函数的返回值

    • 什么叫做返回值(生活实例)
    让同桌帮你买饭回来,对你来说,饭,就是返回值
    
    • 开发中的返回值
    两个数字求和函数,有时候,调用者只是想得到这个和。
    
    • 带返回值函数的案例:
    def getSum(a,b):
        c = a + b
        return c
    #简化:
    def getSum(a,b):
        return a + b
    #调用
    result = getSum(10,20)
    #这时候的result就是得到的返回值
    

    四种函数的类型

    • 无参数,无返回值
    • 无参数,有返回值
    • 有参数,无返回值
    • 有参数,有返回值

    函数的封装强化练习

    • 函数的嵌套调用
    def test2():
        print("test2")
    def test1():
        #调用函数2
        test2()
    test1()
    
    • 封装函数练习

      • 封装函数,完成自定义个数的*组成的直线
      比如:参数为5,打印出如下内容
      
      *****
      
      • 封装函数,完成 自定义行数的 上题 实现的直线
      例如:参数为3,打印如下效果
      
      *****
      *****
      *****
      
      • 封装函数
      封装求3个数字平均数的函数
      

    局部变量

    • 概念
    在函数内部定义,用来存储临时数据的变量,称为临时变量,形参也是局部变量
    
    • 注意
      • 在函数内部定义,作用域为函数内部

      • 不同函数中可以存在同名变量,互不干涉,没有关系

    全局变量

    • 概念

      • 既能在其中一个函数中使用,又能在其他函数中使用的变量,成为全局变量
      #例:
      a = 100
      def test1():
          print(a)
      def test2():
          print(a)
      
    • 全局变量与局部变量同名问题

      • 可以重名
      a = 100
      def test():
          a = 200
          print(a)
      test()
      #这种写法是允许的,打印出的结果为“200”,访问的为离的近的
      
      • 函数内部修改全局变量问题
      a = 100
      def test():
           # global a(需要手动声明a 为全局的才可以进行修改)
          a += 10
          print(a)
      

    如果在函数内部,想修改全局变量的值,需要手动将变量前使用global进行修饰(可变类型的全局变量,不需要修饰)

    例:
    a = [1]
    def test():
       a.append(10)
       print(a) 
    test()
    

    函数应用:图书管理系统

    def showMenu():
        print("1.添加图书")
        print("2.查询图书")
        print("3.删除图书")
        print("4.修改图书")
        print("5.退出系统")
    

    函数的返回值二

    • 多个返回值问题
    允许多个返回值,本质利用的是元组
    def divid(a,b):
        shang = a // b
        yushu = a % b
        return shang,yushu
    value1,value2=divid(10,20)
    print(value1)
    print(value2)
    

    函数的参数二

    • 缺省参数
    # 缺省参数
    def test3(a,b=10):
        print(a)
        print(b)
    test3(100)
    
    • 可变参数
    # 可变参数  *tu    元组形式
    def test4(*tu):
        print(a)
    test4(1)
    test4(1,2,3)
    test4([1,2,3])
    test4((1,2,3))
    # 可变参数 **kw    字典形式
    def test5(**kw):
        print(kw)
    test5(m=1,b=2)
    
    • 引用参数(可以画图讲解)

      • 基本参数
      a=100
      # 在方法中修改变量的值
      def changValue(v):
          v = 200
      changValue(a)
      # 打印发现a的值依旧为100
      print(a)
      
      • 引用参数
      list1=[1,2,3]
      # 在函数中修改变量的值
      def changValue(v):
          v[0] = 100
      changValue(list1)
      # 打印发现list1的值变成了[100, 2, 3]
      print(list1)
      

    递归函数

    • 递归概念
    在函数中不是调用其他而是调用自身,这种调用方式,称为递归调用
    
    • 递归的使用
      • 递归求 ∑100
      • 求 n!

    匿名函数

    • 概念
    用lambda关键字创建的简单的没有函数
    名的函数,这种函数不用def声明
    
    • 语法
    语法格式:
    lambda  参数... :  表达式
    sum = lambda args1,args2: args1+args2
    print(sum(1,2))
    #结果为:3
    
    • 注意事项:
      • 在匿名函数中,不能有return
      • 可以有0、1、多个参数
      • 表达式计算后只能返回一个值

    课后练习

    • 完善图书管理系统其他功能
    • 封装函数:判断一个数字是否为质数
    • 打印1-1000之间所有的质数,两个一排
    • 封装函数:判断一个数字是否为水仙花数
    • 打印所有的水仙花数

    相关文章

      网友评论

          本文标题:004-函数

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