第一阶段-第五章 Python的函数


  说明:该文章是学习 黑马程序员在B站上分享的视频 黑马程序员python教程,8天python从入门到精通而记录的笔记,笔记来源于本人。 若有侵权,请联系本人删除。笔记难免可能出现错误或笔误,若读者发现笔记有错误,欢迎在评论里批评指正。此笔记对应的doc文件的百度网盘下载链接为 Python入门(黑马)的学习笔记,提取码:1b3k。
在这里插入图片描述
在这里插入图片描述

一、函数的介绍

  1.学习目标

  快速体验函数的使用;了解函数的作用。

  2. 什么是函数

  如图所示,函数的定义比较官方,读起来有点空,不够通俗易懂。需结合图中实例以及进行函数的演示来理解。
在这里插入图片描述

  3.本节的演示

在这里插入图片描述
  先打开软件,创建一个名为“05_Python的函数”的文件夹,并创建一个名为“01_函数快速体验”的py文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解,会发现有很多重复的代码,这是由于没有将具有相同功能的程序段定义成函数的缘故。

"""
演示:快速体验函数的开发及应用
"""

# 需求,统计字符串的长度,不使用内置函数Len()
str1 = "itheima"
str2 = "itcast"
str3 = "python"

# 定义一个计数的变量
count = 0
for i in str1:
    count += 1

print(f"字符串{str1}的长度是:{count}")

count = 0
for i in str2:
    count += 1

print(f"字符串{str1}的长度是:{count}")

count = 0
for i in str3:
    count += 1

print(f"字符串{str1}的长度是:{count}")

在这里插入图片描述
  重新编写代码并运行。代码如下,可参考注释进行理解,会发现代码变得简洁高效。这个函数将计算字符串长度的功能给封装了起来。

"""
演示:快速体验函数的开发及应用
"""

# 需求,统计字符串的长度,不使用内置函数Len()
str1 = "itheima"
str2 = "itcast"
str3 = "python"


# # 定义一个计数的变量
# count = 0
# for i in str1:
#     count += 1
#
# print(f"字符串{str1}的长度是:{count}")
#
# count = 0
# for i in str2:
#     count += 1
#
# print(f"字符串{str1}的长度是:{count}")
#
# count = 0
# for i in str3:
#     count += 1
#
# print(f"字符串{str1}的长度是:{count}")

# 可以使用函数,来优化这个过程  后面会讲函数的语法,暂时看不懂语法没关系
def my_len(data):
    count = 0
    for i in data:
        count += 1

    print(f"字符串{data}的长度是{count}")


my_len(str1)
my_len(str2)
my_len(str3)

在这里插入图片描述

  4.为什么要学习、使用函数

在这里插入图片描述

  5.本小节的总结

在这里插入图片描述

二、函数的定义

  1.学习目标

  掌握函数的基础定义语法。

  2.函数的语法

  如图,函数包含5个部分,即关键字def、函数名、传入参数、函数体、返回值。一个函数至少包括关键字def、函数名、函数体3个部分。
在这里插入图片描述

  3.本节的代码演示

  先打开软件,创建一个名为“02_函数定义”的py文件。
在这里插入图片描述
在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解。

"""
演示函数的定义语法
"""


# 定义一个函数,输出相关信息
def say_hi():
    print("Hi 我是黑马程序员,学Python来黑马")


# 调用函数,让定义的函数开始工作
say_hi()

在这里插入图片描述

  4.本小节的总结

在这里插入图片描述

  5.练习案例:自动查核酸

在这里插入图片描述
  进行代码的演示(为了便于管理文件,先将本节之前的代码文件改成“02_1_函数定义”):
在这里插入图片描述
在这里插入图片描述
  创建一个名为“02_2_ 函数基础定义练习案例”的py文件。
在这里插入图片描述
在这里插入图片描述

  编写代码并运行。代码如下,可参考注释进行理解。

"""
演示函数基础定义练习案例:自动查核酸
"""


# 定义函数
def check():
	# 编写函数体输出信息
	print("欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明!")


# 调用函数
check()

在这里插入图片描述

三、函数的参数

  1.学习目标

  掌握函数传入参数的使用。

  2.如何控制函数的传参

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  3.本节的代码演示

  先打开软件,创建一个名为“03_函数的参数”的py文件。
在这里插入图片描述
在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解。

"""
演示函数使用参数
"""


# 定义3数相加的函数,通过参数接收被计算的2个数字
def add(x, y, z):
    result = x + y + z
    print(f"{x} + {y} + {7}的计算结果是:{result}")


# 调用函数,传入被计算的3个数字
add(5, 6, 7)

在这里插入图片描述

  4.本小节的总结

在这里插入图片描述

  5.练习案例:升级版自动查核酸

在这里插入图片描述
  进行代码的演示(为了便于管理文件,先将本节之前的代码文件改成“03_1_函数的参数”):
在这里插入图片描述
在这里插入图片描述
  创建一个名为“03_2_ 函数的参数练习案例”的py文件。
在这里插入图片描述
在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解。

"""
演示函数的参数练习案例:升级自动查核酸
"""


# 定义函数,接收1个形式参数,数字类型,表示体温
def check(num):
    # 在函数体内进行判断体温
    print("欢迎来到黑马程序员!\n请出示您的健康码以及72小时核酸证明,并配合测量体温!")
    if num < 37.5:
        print(f"体温测量中,您的体温是:{num}度,体温正常请进!")
    else:
        print(f"体温测量中,您的体温是:{num}度,需要隔离!")


# 调用函数,传入实际参数
check(37.3)

在这里插入图片描述

四、函数的返回值

在这里插入图片描述

  4.1 函数返回值的定义

  1.学习目标

  掌握函数返回值的作用;掌握函数返回值的定义语法。

  2.什么是返回值

在这里插入图片描述
在这里插入图片描述

  3.返回值的使用语法

在这里插入图片描述

  4.本节的代码演示

  创建一个名为“04_1_ 函数的返回值定义语法”的py文件。
在这里插入图片描述
在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解。会发现,函数在遇到return后,就返回函数的值,然后不会再执行函数后面的语句。

"""
演示:定义函数返回值的语法格式
"""


# 定义一个函数,完成2数相加功能
def add(a, b):
    result = a + b
    # 通过返回值,将相加的结果返回给调用者
    return result
    # 返回结果后,还想输出一句话    函数在遇到return后,就返回函数的值,然后不会再执行函数后面的语句
    print("我完事了")


# 函数的返回值,可以通过变量去接收
r = add(5, 6)
print(r)

在这里插入图片描述

  5.本小节的总结

在这里插入图片描述

  4.2 None类型

  1.什么是None类型

在这里插入图片描述
在这里插入图片描述

  2.None类型的应用场景

在这里插入图片描述

  3.本节的代码演示

  创建一个名为“04_2_None”的py文件。
在这里插入图片描述
在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解。

"""
演示特殊字面最:None
"""


# 无return语句的函数返回值
def say_hi():
    print("你好呀")


result = say_hi()
print(f"无返回值函数,返回的内容是:{result}")
print(f"无返回值函数,返回的内容类型是:{type(result)}")


# 主动返回None的函数
def say_hi2():
    print("你好呀")
    return None


result = say_hi2()
print(f"无返回值函数,返回的内容是:{result}")
print(f"无返回值函数,返回的内容类型是:{type(result)}")

在这里插入图片描述
  如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),体会None的应用场景。

"""
演示特殊字面最:None
"""


# # 无return语句的函数返回值
# def say_hi():
#     print("你好呀")
#
#
# result = say_hi()
# print(f"无返回值函数,返回的内容是:{result}")
# print(f"无返回值函数,返回的内容类型是:{type(result)}")
#
#
# # 主动返回None的函数
# def say_hi2():
#     print("你好呀")
#     return None
#
#
# result = say_hi2()
# print(f"无返回值函数,返回的内容是:{result}")
# print(f"无返回值函数,返回的内容类型是:{type(result)}")

# None用于if判断
def check_age(age):
    if age > 18:
        return "SUCCESS"
    else:
        return None


result = check_age(16)
if not result:
    # 进入if表示result是Wone值也就是False
    print("未成年,不可以进入")

# None用于声明无初始内容的变量
name = None

在这里插入图片描述

  4.本小节的总结

在这里插入图片描述

五、函数说明文档

  1.学习目标

  掌握通过注释对函数进行解释说明。

  2.函数的说明文档

在这里插入图片描述
  需要注意一个细节,如下图所示,在函数后输出3对双引号后,按回车(即Enter键)会自动形成函数的说明注释,剩余内容再手动补齐就行。
在这里插入图片描述
在这里插入图片描述

  3.在PyCharm中查看函数说明文档

在这里插入图片描述
在这里插入图片描述
  注:需悬停等2秒左右。

  4.本节的代码演示

  先打开软件,创建一个名为“05_函数的说明文档”的py文件。
在这里插入图片描述
在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解。
在这里插入图片描述

  5.本小节的总结

在这里插入图片描述

六、函数的嵌套调用

  1.学习目标

  掌握函数的嵌套调用;理解嵌套调用的执行流程。

  2. 什么是函数的嵌套

在这里插入图片描述
在这里插入图片描述

  3.本节的代码演示

  先打开软件,创建一个名为“06_函数的嵌套调用”的py文件。
在这里插入图片描述
在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解。

"""
演示嵌套调用函数
"""


# 定义函数func_b
def func_b():
    print("---2---")


# 定义函数fUnc_a,并在内部调用fUnc_b
def func_a():
    print("---1---")

    # 嵌套调用时func-b
    func_b()

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


# 调用函数func_a
func_a()

在这里插入图片描述

  4.本小节的总结

在这里插入图片描述

七、变量的作用域

  1.学习目标

  知道什么是局部变量;知道什么是全局变量。

  2.局部变量

在这里插入图片描述

  3.全局变量

  如图,全局变量可以定义在函数外的前面。
在这里插入图片描述

  4.本节的代码演示

  先打开软件,创建一个名为“07_变量的作用域”的py文件。
在这里插入图片描述
在这里插入图片描述
  如下的** !!错误!! **代码,运行它,可验证函数里的局部变量(num)出了函数体后会被销毁,无法使用的现象。

"""
演示在函数使用的时候,定义的变量的作用域
"""


# 演示局部变量
def test_a():
    num = 100
    print(num)


test_a()
print(num)

在这里插入图片描述
  如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),可体会全局变量的使用范围。

"""
演示在函数使用的时候,定义的变量的作用域
"""

# # 演示局部变量
# def test_a():
#     num = 100
#     print(num)
#
#
# test_a()
# # 出了函数体,局部变量就无法使用
# # print(num)

# 演示全局变量
num = 200


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


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


test_a()
test_b()
print(num)

在这里插入图片描述

  5.关键字global

在这里插入图片描述
  如下重新编写代码并运行(使用快捷键Ctr+/可快速注释),可体会关键字global的用法及作用。

"""
演示在函数使用的时候,定义的变量的作用域
"""

# # 演示局部变量
# def test_a():
#     num = 100
#     print(num)
#
#
# test_a()
# # 出了函数体,局部变量就无法使用
# # print(num)

# # 演示全局变量
# num = 200
#
#
# def test_a():
#     print(f"test_a:{num}")
#
#
# def test_b():
#     print(f"test_b:{num}")
#
#
# test_a()
# test_b()
# print(num)

# global关键字,在函数内声明变量为全局变量
num1 = 200
num2 = 200


def test_a():
    num1 = 300  # 局部变量
    print(f"test_a:{num1}")


def test_b():
    global num2  # 设置内部定义的变量为全局变量
    num2 = 500
    print(f"test_b:{num2}")


test_a()  # 结果:300
test_b()  # 结果:500
print(num1)  # 结果:200
print(num2)  # 结果:500

在这里插入图片描述

  6.本小节的总结

在这里插入图片描述

八、综合案例:黑马ATM

  1.案例效果

在这里插入图片描述
在这里插入图片描述

  2.本节的代码演示

  先打开软件,创建一个名为“08_函数综合案例”的py文件。
在这里插入图片描述在这里插入图片描述
  编写代码并运行。代码如下,可参考注释进行理解。

"""
演示函数综合案例开发
"""

# 定义全局变量money,name
money = 5000000
name = None
# 要求客户输入姓名
name = input("请输入您的姓名:")


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


# 定义存款函数
def saving(num):
    global money
    # money在函数内部定义为全局变量
    money += num
    print("-----------存款-----------")
    print(f"{name},您好,您存款{num}元成功。")

    # 调用query函数查询余额
    query(False)


# 定义取款函数
def get_money(num):
    global money
    money -= num
    print("---------取款---------")
    print(f"{name},您好,您取款{num}元成功。")

    # 调用query函数查询余额
    query(False)


# 定义主菜单函数
def main():
    print("---------主菜单---------")
    print(f"{name},您好,欢迎来到黑马银行ATM。请选择操作:")
    print("查询余额\t[输入1]")
    print("存款\t\t[输入2]")  # 通过\t制表符对齐输出
    print("取款\t\t[输入3]")
    print("退出\t\t[输入4]")
    return input("请输入您的选择:")


# 设置无限循环,确保程序不退出
while True:
    keyboard_input = main()
    if keyboard_input == "1":
        query(True)
        continue  # 通过continue继续下一次循环,一进来就是回到了主菜单    其实可以不加
    elif keyboard_input == "2":
        num = int(input("您想要存多少钱?请输入:"))
        saving(num)
        continue
    elif keyboard_input == "3":
        num = int(input("您想要取多少钱?请输入:"))
        get_money(num)
        continue
    else:
        print("程序退出啦")
        break  # 通过break退出循环

在这里插入图片描述
在这里插入图片描述
  好了,本章的笔记到此结束,谢谢大家阅读。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知乎云烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值