五、Python函数

1、函数介绍

函数:是组织好的,可重复使用的 ,用来实现特定功能的代码段

使用函数的原因:

为了得到一个针对特定需求,可供重复利用的代码段提高程序的复用性,减少重复性代码,提高开发效率

2、函数的定义

语法格式:

五、Python函数_第1张图片

函数的调用

函数名(参数)

注意事项:

  • 传入参数如果不需要,可以省略
  • 返回值如不需要,可以省略
  • 函数必须先定义后才能调用

3、函数的参数

函数传入参数的功能

在函数进行计算的时候,接受外部(调用时)提供的数据

def add(x,y):
    result = x + y
    print((f"{x}+{y}的计算结果是:{result}"))

# 调用函数
    
add(5,6)
add(1,4)

"""
运行结果:
5+6的计算结果是:11
1+4的计算结果是:5

"""

语法解析

  • 函数定义中,提供的x和y,被称为:形式参数(形参),参数之间使用逗号进行分隔
  • 函数调用中,提供的5和6,被称为:实际参数(实参),传入的时候,按照顺序传入数据,使用逗号分隔
  • 函数的传入参数可以没有,也可以有N个,使用逗号分隔

练习案例

五、Python函数_第2张图片

# 函数定义
def select(tmp):
    print("欢迎来到黑马程序员!请出示您的健康码以及72小时核酸证明,并配合测量体温!")

    if tmp <= 37.5:
        print(f"体温测量中,您的体温是:{tmp}度,体温正常请进!")
    else:
        print(f"体温测量中,您的体温是:{tmp}度,需要隔离!")
# 函数调用
select(37.3)
select(39.3)

4、函数的返回值

返回值定义:

就是程序中函数完成事情后,最后给调用者的结果

语法格式:

五、Python函数_第3张图片

# 定义加法函数
def add(x,y):
    result = x + y
    return result

# 函数的返回值,可以通过变量去接收

r = add(2,5)
print(r)

# 运行结果:
# 7

① None类型返回值

如果函数没有使用return语句返回数据,则函数也是由返回值的
即:None,类型是:
表示这个函数没有返回什么有意义的内容

None类型的应用场景

  • 用在函数无返回值上
  • 用在if判断上:
    - 在if判断中,None等同于False
    - 一般用于在函数中主动返回None,配合if判断做相关处理
  • 用于声明无内容的变量上
    - 定义变量,但暂时不需要变量有具体值,可以用None来代替
def check(age):
    if age >18:
        return "SUCCESS"
    else:
        return None
result = check(18)
if not result:
    # 进入if,表示result值为None,也就是False
    print("未成年")

5、函数的说明文档

函数是纯代码,要想理解函数的含义,需要去一行行阅读理解代码,效率较低
可以给函数添加说明文档,辅助理解函数的作用

语法格式:

五、Python函数_第4张图片

# 定义函数
def add(x,y):
    """
    add函数可以接收2个参数,进行2个数相加的功能
    :param x:形参x表示相加的其中一个数字
    :param y:形参y表示相加的另一个数字
    :return:返回值是两个数相加的结果
    """
    result = x +y
    print(f"两个数相减的结果是:{result}")
    return result
# 调用函数
add(2,5)

在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档,同时,通过输入三个引号,也可以快速出现相应格式

五、Python函数_第5张图片

6、函数的嵌套调用

即一个函数里面又调用了另一个函数

def func_2():
    print("---2---")

def func_1():
    print("---1---")

    func_2()

    print("---3---")

# 调用函数
func_1()

"""
运行结果:
---1---
---2---
---3---

"""

嵌套调用的执行流程

  • 函数1中嵌套函数2,会先把函数2中的内容执行完后,再将剩余的函数1中内容执行完成

7、变量在函数中的作用域

局部变量

局部变量就是定义在函数体内部的变量,即只在函数体内部生效,临时保存数据
当函数调用完成后,则销毁局部变量

def test():
    # num变量在函数体内,称为局部变量
    num = 100
    print(num)

# test()
# print(num)
# 局部变量在出了函数体后,就不能在使用
# 输出结果:
# NameError: name 'num' is not defined. Did you mean: 'sum'?

全局变量

全局变量就是在函数体内、外都能生效的变量

num = 100

def test():
    print(f"test:{num}")
    
test()
print(num)

"""
运行结果:
test:100
100

"""

如果函数内部的局部变量和函数外部的全局变量的变量名相同,则在调用函数时,是以函数内的局部变量为准

num = 100
def test():
    num = 200
    print(f"test:{num}")

test()
print(num)

"""
运行结果:
test:200
100

"""

global关键字

使用global关键字,可以在函数内部声明变量为全局变量,做到可以在函数内部修改全局变量的效果

num = 100

def test():
    global num
    num = 200
    print(f"test:{num}")

test()
print(num)

"""
运行结果:
test:200
200

"""

8、综合案例

五、Python函数_第6张图片
五、Python函数_第7张图片

# 定义全局变量
money = 5000000
name = None

# 要求客户输入姓名
name = input("请输入您的姓名:")

# 查询函数
def query():
    print("------------查询余额-------------")
    print(f"{name},您好,您的余额剩余:{money}元")

# 存款函数
def save(num):
    global money
    money += num
    print("-----------存款----------")
    print(f"{name},您好,您存款{num}成功")
    print(f"{name},您好,您的余额剩余:{money}元")

# 取款函数
def get_money(num):
    global money
    money -= num
    print("-----------取款----------")
    print(f"{name},您好,您取款{num}成功")
    print(f"{name},您好,您的余额剩余:{money}元")

# 主菜单函数
def main():
    print("---------------主菜单----------------")
    print(f"{name},您好,欢迎来到黑马银行ATM,请选择操作:")
    print("查询余额\t[输入1]")
    print("存款\t\t[输入2]")
    print("取款\t\t[输入3]")
    print("退出\t\t[输入4]")
    return input("请输入您的选择:")
# 设置无限循环,确保程序不退出
while True:
    get_input = main()
    if get_input == "1":
        query()
        continue   # 通过continue继续下一次循环,一进来就是回到主菜单
    elif get_input == "2":
        num = int(input("请输入您要存入的金额:"))
        save(num)
        continue
    elif get_input == "3":
        num = int(input("请输入您要取出的金额:"))
        get_money(num)
    else:
        print("程序已经退出!")
        break   # 通过break退出while循环

你可能感兴趣的:(Python学习笔记,python,开发语言,经验分享)