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

news2024/12/23 10:01:18

目录

  • 一、函数的介绍
    •   1.学习目标
    •   2. 什么是函数
    •   3.本节的演示
    •   4.为什么要学习、使用函数
    •   5.本小节的总结
  • 二、函数的定义
    •   1.学习目标
    •   2.函数的语法
    •   3.本节的代码演示
    •   4.本小节的总结
    •   5.练习案例:自动查核酸
  • 三、函数的参数
    •   1.学习目标
    •   2.如何控制函数的传参
    •   3.本节的代码演示
    •   4.本小节的总结
    •   5.练习案例:升级版自动查核酸
  • 四、函数的返回值
    •   4.1 函数返回值的定义
      •   1.学习目标
      •   2.什么是返回值
      •   3.返回值的使用语法
      •   4.本节的代码演示
      •   5.本小节的总结
    •   4.2 None类型
      •   1.什么是None类型
      •   2.None类型的应用场景
      •   3.本节的代码演示
      •   4.本小节的总结
  • 五、函数说明文档
    •   1.学习目标
    •   2.函数的说明文档
    •   3.在PyCharm中查看函数说明文档
    •   4.本节的代码演示
    •   5.本小节的总结
  • 六、函数的嵌套调用
    •   1.学习目标
    •   2. 什么是函数的嵌套
    •   3.本节的代码演示
    •   4.本小节的总结
  • 七、变量的作用域
    •   1.学习目标
    •   2.局部变量
    •   3.全局变量
    •   4.本节的代码演示
    •   5.关键字global
    •   6.本小节的总结
  • 八、综合案例:黑马ATM
    •   1.案例效果
    •   2.本节的代码演示

  说明:该文章是学习 黑马程序员在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退出循环

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac 查看端口和关闭进程

经常使用 node 启动本地&#xff0c;有时一不小心按了 Ctrl Z &#xff08;Command Z&#xff09;把服务关闭了&#xff0c;但实际上没真正关闭该服务&#xff0c;再次启动服务很可能会提示端口号被占用。 系统环境&#xff1a;Mac 查看端口的详细端口占用情况 命令&#xf…

Scrapy爬虫框架集成Selenium来解析动态网页

1、爬虫项目单独使用scrpay框架的不足 当前网站普遍采用了javascript 动态页面&#xff0c;特别是vue与react的普及&#xff0c;使用scrapy框架定位动态网页元素十分困难&#xff0c;而selenium是最流行的浏览器自动化工具&#xff0c;可以模拟浏览器来操作网页&#xff0c;解…

【PCIE】Device Control Register (Offset 08h)

Maximum Payload Size “Maximum Payload Size” &#xff08;最大传输负载大小&#xff09;是PCI Express设备控制寄存器中的一个位域&#xff0c;用于设置设备支持的最大传输负载的大小。 PCI Express使用数据包&#xff08;Packet&#xff09;来传输数据&#xff0c;而数据…

2024考研408-操作系统 第二章-进程与线程 学习笔记

文章目录 前言一、进程1.1、进程的概念、组成与特征1.1.1、进程的概念1.1.2、进程的组成认识PCB认识程序段与数据段&#xff08;包含进程实体概念&#xff09; 1.1.3、进程的特征知识回顾与重要考点 1.2、进程的状态、状态间的转换和组织方式1.2.1、进程的状态进程的五种状态详…

微信扫码跳转小程序实现web登录

前面博客我有写微信扫码跳转h5实现登录&#xff0c;但是需要申请服务号 最近项目迭代&#xff0c;想到小程序能做扫码登录的话&#xff0c;web网页端和小程序同时登录账户不是更好吗&#xff0c;还不用额外申请服务号 第一步 打开微信公众平台&#xff0c;在“开发”菜单下点击…

springcloud笔记二

配置管理服务是共有的&#xff0c;结合微服务自身的配置。这样核心配置更改就无需逐个更改 配置管理: 首先新建一个配置管理 Data ID为配置文件的名称 一般为项目名称-项目环境yaml&#xff0c;如userservice-dev.yaml 编写配置内容&#xff0c;发布 获取nacos配置信息: 可能…

数据透视表:pivot_table()--Pandas

1. 函数功能 创建数据透视表&#xff0c;返回一个EXCEL形式的数据透视表。 2. 函数语法 DataFrame.pivot_table(valuesNone, indexNone, columnsNone, aggfuncmean, fill_valueNone, marginsFalse, dropnaTrue, margins_nameAll, observedFalse, sortTrue)3. 函数参数 参数…

Vue3 父子组件之间传值

Vue3TSVite环境开发 1.父组件给子组件传递方法&#xff0c;属性和值 父组件引入子组件处里面绑定方法 showBtn &#xff0c;属性name和值msg 子组件通过defineProps()来接收 子组件页面显示父组件的方法 showBtn &#xff0c;属性name和值msg 2.父组件接收子组件传递的…

ModaHub魔搭社区:向量数据库Zilliz Cloud的AUTOINDEX教程

目录 创建索引和向量搜索 总结 为满足用户不同需求,Zilliz Cloud 提供 3 种类型的集群 CU——性能型、容量型和经济型。但是,为不同类型 CU 集群中的 Collection 创建索引时,通常需要根据所选择的 CU 类型调整索引参数。为了方便您创建索引,免去调节参数的麻烦,Zilliz C…

Metasploit Pro 4.22.1-2023070501 (Linux, Windows) - 渗透测试框架

Metasploit Pro 4.22.1-2023070501 (Linux, Windows) - 渗透测试框架 Rapid7 Penetration testing 请访问原文链接&#xff1a;https://sysin.org/blog/metasploit-pro-4/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 世界…

投影矩阵公式推导

如下图所示&#xff1a; y对x投影记作yx&#xff0c;则&#xff1a; <yx, x> <yx z, x> |yx| * |x| yx |yx| * x / |x| <yx, x> / |x| *x / |x| &#xff0c;即可得到下图中的矩阵。 注意该矩阵的如下性质&#xff1a; p是对称的rank 1p^2 p QE分…

基于STM32CUBEMX驱动TOF模块VL6180与VL6180X(3)----修改设备地址

基于STM32CUBEMX驱动TOF模块VL6180与VL6180X----3.修改设备地址 概述修改设备地址主程序测试结果 概述 本章主要介绍如何修改VL6180X传感器的I2C地址&#xff0c;并成功驱动设备以使用新的地址。VL6180X是一种多功能、高性能的接近和环境光传感器&#xff0c;常用于测量物体与…

如何在海外进行A/B测试

A/B测试是对应用的各个版本进行实验&#xff0c;以分析用户如何与其交互的有效过程&#xff0c;它能够帮助我们改进关键指标&#xff0c;例如参与度或应用内购买&#xff0c;以及推出新功能&#xff0c;从而最大限度地降低大规模流失用户的风险。 A/B测试和ASO优化通常适用于应…

唐僧的项目总结报告,我是真服了

早上好&#xff0c;我是老原。 上个月给大家更新了一篇项目管理案例——西天取经。 由于该项目的亏损必须要裁掉团队中的其中一人&#xff0c;究竟该裁掉谁&#xff0c;大家也是讨论的非常激烈&#xff0c;各有各的建议。 鉴于项目已经成功交付&#xff0c;唐僧作为这个项目…

基于51单片机和proteus的智能加湿器设计

此系统是基于51单片机和proteus的仿真设计&#xff0c;功能如下&#xff1a; 1. LCD1602实时显示环境温湿度。 2. 系统分为自动/手动模式&#xff0c;自动模式下系统根据读取的湿度值和设定的湿度值自动运行&#xff0c; 手动模式下使用按键启动/停止设备。 3. 湿度阈值可通…

基于 jmeter 和 shell 的接口性能自动化

目录 前言&#xff1a; 1. 总体需求 2. 实现流程 3.准备工作 4.具体实现 4.1 用例执行 主流程脚本 4.2 服务器监控 监控脚本&#xff1a; 服务器监控脚本 4.3 生成 html 报告 html 样式表 发邮件脚本 前言&#xff1a; 基于JMeter和Shell的接口性能自动化是一种有…

SpringBoot 项目使用 Redis 对用户IP进行接口限流

本文主要参考了该篇文章&#xff1a;https://www.zhihu.com/question/586213782/answer/3038040317?utm_id0 文章目录 一、思路1.1 固定时间段&#xff08;旧思路&#xff09;1.1.1 思路描述1.1.2 思路缺陷 1.2 滑动窗口&#xff08;新思路&#xff09;1.2.1 思路描述1.2.2 Re…

ELK 企业级日志分析系统(二)

ELK 一、FilebeatELK 部署二、logstash的使用grok正则捕获插件mutate 数据修改插件multiline 多行合并插件date 时间处理插件 一、FilebeatELK 部署 Node1节点&#xff08;2C/4G&#xff09;&#xff1a;node1/192.168.136.52 Elasticsearch Node2节点&#xff08;2C/4G&#…

第7集丨JavaScript 中函数——概述

目录 一、函数概览二、函数定义2.1 函数声明 (函数语句)2.2 函数表达式 (function expression)2.3 匿名函数立即执行2.4 函数生成器声明 (function* 语句)2.5 函数生成器表达式 (function*表达式)2.6 箭头函数表达式 (>)2.7 Function构造函数2.8 生成器函数的构造函数 三、函…

C#实现将小数值四舍五入为整数

一、需求说明 在项目的开发中&#xff0c;遇到一些除法计算内容会产生小数值&#xff0c;但是又需要根据项目的实际情况将这些小数内容化为整数&#xff0c;方便后续内容的实现。 二、需求分析 将小数内容转为整数【但是转为小数又分为几种情况】&#xff1a; ①将小数取为下…