【黑马python】基础 5.Python 函数:参数 返回值 嵌套

笔记汇总目录

Python 函数

image

函数的基础定义语法

  • 要素:def、函数名()、参数、冒号、函数体、return

    • 可省略:参数和return
    • 不可省略:参数省略时,小括号不可省略
  • 函数使用顺序:先定义,后调用

image

  • 练习

image

  • 代码示例

    def say_hi():
        print("欢迎来到黑马程序员!")
        print("请出示您的健康码以及72小时核酸证明!")
        #     print("第一行\n第二行")
    
    
    # 调用函数
    say_hi()
    
    """
    欢迎来到黑马程序员!
    请出示您的健康码以及72小时核酸证明!
    """
    

函数的传入参数

  • 函数的参数:逗号隔开,数量不限

  • 实参:和形参一一对应,否则报错

image

  • 代码示例

    def add(a, b):
        res = a + b
        print(f"{a} + {b}的计算结果是:{res}")
    
    
    add(1, 3)  # 1 + 3的计算结果是:4
    add(156, 3820)  # 156 + 3820的计算结果是:3976
    
  • 练习:升级版测体温

image

  • 代码示例

    # 函数定义
    def say_hi(temp):
        print("欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明!")
        if temp <= 37.5:
            print(f"您的体温是:{temp},体温正常请进!")  # 您的体温是:36.5,体温正常请进!
        else:
            print(f"您的体温是:{temp},需要隔离!")  # 您的体温是:37.6,需要隔离!
    
    # 调用函数
    say_hi(36.5)
    

函数的返回值

  • 函数返回值:函数执行完成后,返回给调用者的结果

  • 关键字:return

  • return结束函数体:return后的代码不执行

image

  • 代码示例

    # 函数的返回值
    def add(a, b):
        return a + b
        # print("add功能已完成")  # return后的代码不执行
    
    
    res = add(12, 34)  # 46
    print(res)
    

函数返回值的None类型

  • 没有返回值:返回了字面量None,表示返回了“空”

  • 此时,None的类型:<class 'NoneType'>

  • None:可以主动使用return语句,效果等同于不写return语句:`return None

image

  • 代码示例

    # 返回值为None
    def say_hi():
        print("hello")
        # return None  # 不写return语句,等同于:写了这句
    
    
    res = say_hi()
    print(f"返回值res为:{res},res的类型为:{type(res)}")
    # 返回值res为:None,res的类型为:<class 'NoneType'>
    
  • None的应用场景

    • 3类:函数返回值;if判断中;变量定义(声明无内容变量)

image

  • 代码示例:None在if中的应用

    # None在if中的应用:None 等同于 False
    def check_age(age):
      if age > 18:
          return "success"  # 这里是return,否则按无return,无论什么结果,都会返回None
      else:
          return None
    
    
    res = check_age(17)
    print(res)
    if not res:
      print("未成人,不可进入")
    
  • 代码示例:None用于声明无初始内容的变量

    name = None
    

函数的说明文档

  • 文档内容:函数作用、参数意义、返回值意义

image
image

  • 代码示例

    def add(a, b):
        """
        add函数:接受2个参数,进行两数相加的功能
        :param a: 形参a表示相加的一个因子
        :param b: 形参b表示相加的另一个因子
        :return: 返回值是两数相加的结果
        """
        return a + b
        # print("add功能已完成")  # return后的代码不执行
    
    
    res = add(12, 34)  # 46
    print(res)
    

函数的嵌套调用

  • 函数嵌套:一个函数中,又调用了另一个函数

  • 执行顺序:执行完 被调用函数 的全部语句后,继续执行 本函数

image

  • 代码示例

    # 函数嵌套
    def func_b():
        print("--2-- 被调用函数")
    
    def func_a():
        print("--1-- 本函数的第一句")
        func_b()  # 执行b
        print("--3-- 本函数继续执行")
    
    func_a()
    # --1-- 本函数的第一句
    # --2-- 被调用函数
    # --3-- 本函数继续执行
    

变量在函数中的作用域

  • 变量作用域:变量的作用范围,哪里可用,哪里不可用

  • 局部变量:定义在函数内,只能在函数内使用的临时变量,函数调用结束即变量销毁

  • 全局变量:定义在函数外,在函数内外都能使用的变量

  • global 关键字

    image

  • 代码示例:没有定义 global 时

    # 变量作用域:局部变量,全局变量,global关键字
    num = 124
    def test1():
        print(f"test1: {num}")
    
    def test2():
        num = 456  # 此处的num:相当于不同于第一句的全局变量num的另一个变量
        print(f"test2: {num}")
    
    
    test1()  # test1: 124
    test2()  # test2: 456
    print(num)  # 124
    
  • 代码示例:使用 global 时

    # 变量作用域:局部变量,全局变量,global关键字
    num = 124
    def test1():
        print(f"test1: {num}")
    
    def test2():
        global num  # 将num变量声明为全局变量
        num = 456  # 此处的num:相当于第一句的全局变量num
        print(f"test2: {num}")
    
    test1()  # test1: 124
    test2()  # test2: 456
    print(num)  # 456
    

函数综合案例

image

  • image

  • 代码示例

    # 函数综合案例: ATM
    # 注意:和老师的代码稍有差别,同样可以实现要求的效果
    
    money = 5000000
    
    def menu():
        print("----------------主菜单------------------")
        print(f"{name},您好,欢迎来到黑马银行ATM。请选择操作:")
        print("查询余额\t[输入1]")
        print("存款\t\t[输入2]")  # 2个制表符可以对齐
        print("取款\t\t[输入3]")
        print("退出\t\t[输入4]")
        num = int(input("请输入您的选择:"))
        # global money  # 这里反而不用写global
    
        if num == 1:
            check_money(True)
            menu()
    
        elif num == 2:
            num = int(input("请输入存款金额:"))
            save_money(num)
            menu()
    
        elif num == 3:
            num = int(input("请输入取款金额:"))
            get_money(num)
            menu()
    
        else:
            print("------------------退出-------------------")
    
    def check_money(flag):
        if flag:
            print("----------------查询余额------------------")
        print(f"{name},您好,您的余额是:{money}元")
    
    def save_money(num):
        global money  # money在函数内定义为全局变量
        money += num
        print("------------------存款-------------------")
        print(f"{name},您好,您存款{num}元")
        check_money(False)
        # print(f"{name},您好,您的余额是:{money}元")
    
    def get_money(num):
        global money
        money -= num
        print("------------------取款-------------------")
        print(f"{name},您好,您取款{num}元")
        check_money(False)
        # print(f"{name},您好,您的余额是:{money}元")
    
    name = input("请输入您的姓名:")
    menu()
    

参考链接

END

posted @ 2025-10-14 23:31  anliux  阅读(4)  评论(0)    收藏  举报