当前位置: 首页 > news >正文

Python-第五天 Python函数

Python-第五天 Python函数

  • 一、函数介绍
    • 1. 什么事函数
  • 二、函数的定义
    • 1.函数的定义:
    • 2.案例
  • 三、函数的参数
    • 1.函数的传入参数
    • 2.案例升级
  • 四、函数的返回值
    • 1.什么是返回值
    • 2.返回值的语法
    • 3.None类型
    • 4.None类型的应用场景
  • 五、函数说明文档
    • 1.函数的说明文档
    • 2.在PyCharm中查看函数说明文档
  • 六、函数的嵌套调用
    • 1.什么是函数的嵌套
  • 七、变量的作用域
    • 1.局部变量
    • 2.全局变量
    • 3.global关键字
  • 八、综合案例

一、函数介绍

1. 什么事函数

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

我们使用过的:input()、print()、str()、int()等都是Python的内置函数

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

二、函数的定义

1.函数的定义:

def 函数名(传入参数):函数体return 返回值

函数的调用

函数名(参数)

注意
① 参数如不需要,可以省略(后续章节讲解)
② 返回值如不需要,可以省略(后续章节讲解)
③ 函数必须先定义后使用

2.案例

练习案例:自动查核酸
定义一个函数,函数名任意,要求调用函数后可以输出如下欢迎语:
欢迎来到黑马程序员!
请出示您的健康码及72小时核酸证明!

def check():print('欢迎来到黑马程序员!\n请出示您的健康码及72小时核酸证明!')check()

在这里插入图片描述

三、函数的参数

1.函数的传入参数

传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据。

函数的传入参数 - 传参定义

#定义函数
def add(x,y):result = x +yprint(f'{x} + {y} 的结果是: {x+y}')#调用函数
add(5,6)
  • 实现了,每次计算的是x + y

  • x + y的值,可以在调用函数的时候指定。

  • 函数定义中,提供的x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数

  • 参数之间使用逗号进行分隔

  • 函数调用中,提供的5和6,称之为:实际参数(实参),表示函数执行时真正使用的参数值

  • 传入的时候,按照顺序传入数据,使用逗号分隔

2.案例升级

练习案例:升级版自动查核酸
定义一个函数,名称任意,并接受一个参数传入(数字类型,表示体温)
在函数内进行体温判断(正常范围:小于等于37.5度),并输出如下内容:

在这里插入图片描述

def check(t):print('欢迎来到黑马程序员! 请出示您的健康码以及72小时核酸证明,并配合测体温!')if t <=37.5:print(f'体温测量中,您的体温是:{t}度,体温正常请进!')else:print(f'体温测量中,您的体温是:{t}度,需要隔离!')check(37.3)

四、函数的返回值

1.什么是返回值

所谓“返回值”,就是程序中函数完成事情后,最后给调用者的结果

2.返回值的语法

语法就是:通过return关键字,就能向调用者返回数据

在这里插入图片描述

3.None类型

Python中有一个特殊的字面量:None,其类型是:<class ‘NoneType’>
无返回值的函数,实际上就是返回了:None这个字面量
None表示:空的、无实际意义的意思
函数返回的None,就表示,这个函数没有返回什么有意义的内容。
也就是返回了空的意思。
在这里插入图片描述
在这里插入图片描述

4.None类型的应用场景

None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。
• 用在函数无返回值上
• 用在if判断上
• 在if判断中,None等同于False
• 一般用于在函数中主动返回None,配合if判断做相关处理
• 用于声明无内容的变量上
• 定义变量,但暂时不需要变量有具体值,可以用None来代替

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

五、函数说明文档

1.函数的说明文档

函数是纯代码语言,想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。
我们可以给函数添加说明文档,辅助理解函数的作用。
语法如下:
通过多行注释的形式,对函数进行说明解释
• 内容应写在函数体之前

在这里插入图片描述

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

在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档

在这里插入图片描述

六、函数的嵌套调用

1.什么是函数的嵌套

所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置

七、变量的作用域

1.局部变量

变量作用域指的是变量的作用范围(变量在哪里可用,在哪里不可用)
主要分为两类:局部变量和全局变量
所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效
变量a是定义在testA函数内部的变量,在函数外部访问则立即报错.
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量
在这里插入图片描述

2.全局变量

所谓全局变量,指的是在函数体内、外都能生效的变量
思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办?
答:将这个数据存储在一个全局变量里面
在这里插入图片描述

3.global关键字

思考:testB函数需要修改变量num的值为200,如何修改程序?
testB函数内部的 num = 200 是定义了一个局部变量

在这里插入图片描述
☆ 使用 global关键字 可以在函数内部声明变量为全局变量, 如下所示

在这里插入图片描述

八、综合案例

在这里插入图片描述

• 定义一个全局变量:money,用来记录银行卡余额(默认5000000)
• 定义一个全局变量:name,用来记录客户姓名(启动程序时输入)
• 定义如下的函数:
• 查询余额函数
• 存款函数
• 取款函数
• 主菜单函数
• 要求:
• 程序启动后要求输入客户姓名
• 查询余额、存款、取款后都会返回主菜单
• 存款、取款后,都应显示一下当前余额
• 客户选择退出或输入错误,程序会退出,否则一直运行

"""
演示函数综合案例开发
"""# 定义全局变量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 += numprint("-------------存款------------")print(f"{name},您好,您存款{num}元成功。")# 调用query函数查询余额query(False)# 定义取款函数
def get_money(num):global moneymoney -= numprint("-------------取款------------")print(f"{name},您好,您取款{num}元成功。")# 调用query函数查询余额query(False)
# 定义主菜单函数
def main():print("-------------主菜单------------")print(f"{name},您好,欢迎来到黑马银行ATM。请选择操作:")print("查询余额\t[输入1]")print("存款\t\t[输入2]")print("取款\t\t[输入3]")    # 通过\t制表符对齐输出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)continueelif keyboard_input == "3":num = int(input("您想要取多少钱?请输入:"))get_money(num)continueelse:print("程序退出啦")break       # 通过break退出循环

相关文章:

Python-第五天 Python函数

Python-第五天 Python函数一、函数介绍1. 什么事函数二、函数的定义1.函数的定义&#xff1a;2.案例三、函数的参数1.函数的传入参数2.案例升级四、函数的返回值1.什么是返回值2.返回值的语法3.None类型4.None类型的应用场景五、函数说明文档1.函数的说明文档2.在PyCharm中查看…...

【Python学习笔记】28.Python3 错误和异常

前言 作为 Python 初学者&#xff0c;在刚学习 Python 编程时&#xff0c;经常会看到一些报错信息&#xff0c;在前面我们没有提及&#xff0c;这章节我们会专门介绍。 Python3 错误和异常 Python 有两种错误很容易辨认&#xff1a;语法错误和异常。 Python assert&#xf…...

SQLServer 迁移到 MySQL 工具对比

我之所以会写这篇对比文章&#xff0c;是因为公司新产品研发真实经历过这个痛苦过程&#xff08;传统基于 SQL Server开发的C/S 产品转为 MySQL云产品&#xff09;。首次需要数据转换是测试环节&#xff0c;当时为了快速验证新研发云产品性能与结果准确性&#xff08;算法类&am…...

分析finebi5.x仪表板组件获取数据过程(数据是数据集或者sql的)

首先仪表板的公共连接类似:http://localhost:37799/webroot/decision/link/Bo6B 当我们访问这个连接时,会来到FineLinkAction的getShareReport方法。 public String getShareReport(HttpServletRequest req, HttpServletResponse res, @FinePathVariable("linkId"…...

设计模式--适配器模式 Adapter Pattern

设计模式--适配器模式 Adapter Pattern适配器模式 Adapter Pattern1.1 基本介绍1.2 工作原理类适配器模式对象适配器模式接口适配器模式小结适配器模式 Adapter Pattern 1.1 基本介绍 &#xff08;1&#xff09;适配器模式将某个类的接口转换成为客户端期望的另一个接口表示&…...

PVE虚拟机篇-rest api

rest api官方介绍 Proxmox VE API rest api文档 rest api文档 rest api token 调用pve rest api ,有两种认证方式 Ticket Cookie Ticket Cookie的方式是最为推荐的&#xff0c;获取的方式为&#xff0c;通过post请求&#xff0c;发送用户名和密码到pve的server端获取tok…...

2022-2025学年面向中小学生的白名单全国性竞赛活动清单及官网地址链接

**资料来源:爬虫爬取。** 教育部办公厅 工业和信息化部办公厅关于公布 首批特色化示范性软件学院名单的通知 教育部办公厅 工业和信息化部办公厅关于公布首批特色化示范性软件学院名单的通知 - 中华人民共和国教育部政府门户网站 教育部办公厅关于2022-2025学年面向中小学生…...

Python 高级编程之生成器与协程进阶(五)

文章目录一、概述二、生成器1&#xff09;生成器和迭代器的区别2&#xff09;生成器创建方式1、通过生成器函数创建2、通过生成器表达式创建3&#xff09;生成器表达式4&#xff09;yield关键字5&#xff09;生成器函数6&#xff09;return 和 yield 异同7&#xff09;yield的使…...

Django框架之视图和URL

视图和URL 站点管理页面做好了, 接下来就要做公共访问的页面了.对于Django的设计框架MVT. 用户在URL中请求的是视图.视图接收请求后进行处理.并将处理的结果返回给请求者.使用视图时需要进行两步操作 1.定义视图2.配置URLconf 1. 定义视图 视图就是一个Python函数&#xff0c…...

Python 的Tkinter包系列之七:好例子补充2

Python 的Tkinter包系列之七&#xff1a;好例子补充2 英汉字典&#xff08;使用文本文件记录英语单词和解释&#xff09;、简单的通信录&#xff08;使用SQLite数据库记录人员信息&#xff09; 一、tkinter编写英汉字典 先看效果图&#xff1a; 词典文件是一个文本文件&…...

每日一练-等差数列

等差数列&#x1f340;题目描述&#x1f33f;解题思路&#x1f338;Python源码&#x1f4e7;Summary&#x1f4c6;Date: 2023年2月10日 &#x1f3ac;Author: 小 y 同 学 &#x1f4c3;Classify: 蓝桥杯每日一练 &#x1f516;Language: Python &#x1f340;题目描述 题意   …...

使用动态参数构建CUDA图

文章目录使用动态参数构建CUDA图使用显式 API 调用构建 CUDA 图使用流捕获构建 CUDA 图组合方法执行结果总结使用动态参数构建CUDA图 自从在 CUDA 10 以来&#xff0c;CUDA Graphs 已被用于各种应用程序。 上图将一组 CUDA 内核和其他 CUDA 操作组合在一起&#xff0c;并使用指…...

在Fortran中调用Python教程

前言Python是机器学习领域不断增长的通用语言。拥有一些非常棒的工具包&#xff0c;比如scikit-learn&#xff0c;tensorflow和pytorch。气候模式通常是使用Fortran实现的。那么我们应该将基于Python的机器学习迁移到Fortran模型中吗&#xff1f;数据科学领域可能会利用HTTP AP…...

04-PS人像磨皮方法

1.高斯模糊磨皮 这种方法的原理就是建立一个将原图高斯模糊后图层, 然后用蒙版加画笔或者历史画笔工具将需要磨皮的地方涂抹出来, 通过图层透明度, 画笔流量等参数来控制磨皮程度 1.新建图层(命名为了高斯模糊磨皮), 混合模式设置为正常, 然后选择高斯模糊, 模糊数值设置到看…...

nginx反向代理+负载均衡上传webshell重难点+apache漏洞

nginx反向代理 nginx 负载均衡 负载均衡的策略 1、轮询&#xff1a;nginx默认就是轮询其权重都默认为1&#xff0c;服务器处理请求的顺序&#xff1a;ABABABABAB… upstream mysvr { server 192.168.137.131; server 192.168.137.136; }2、weight&#xff1a;跟据配置…...

transition组件的使用

<template><button click"flag !flag">切换</button><transition name"fade"><div v-if"flag" class"box"></div></transition> </template><script setup lang"ts"&g…...

多行文本在块元素中垂直居中

单行文本垂直居中对齐 在块元素中&#xff0c;让单行文本居中&#xff0c;可以使用line-height等于块元素的高&#xff0c;即可让该单行文本垂直居中对齐。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><me…...

在 WebAssembly 中使用 C/C++ 和 libbpf 编写 eBPF 程序

作者&#xff1a;于桐&#xff0c;郑昱笙 eBPF&#xff08;extended Berkeley Packet Filter&#xff09;是一种高性能的内核虚拟机&#xff0c;可以运行在内核空间中&#xff0c;用来收集系统和网络信息。随着计算机技术的不断发展&#xff0c;eBPF 的功能日益强大&#xff0c…...

leveldb源码解析六——compact

compact分为manual_compaction、minor_compaction、major_compaction&#xff0c;统一由MaybeScheduleCompaction触发&#xff1a; void DBImpl::MaybeScheduleCompaction() {mutex_.AssertHeld();if (background_compaction_scheduled_) {// Already scheduled} else if (shu…...

数据结构(二):单向链表、双向链表

数据结构&#xff08;二&#xff09;一、什么是链表1.数组的缺点2.链表的优点3.链表的缺点4.链表和数组的区别二、封装单向链表1. append方法&#xff1a;向尾部插入节点2. toString方法&#xff1a;链表元素转字符串3. insert方法&#xff1a;在任意位置插入数据4.get获取某个…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

LeetCode - 199. 二叉树的右视图

题目 199. 二叉树的右视图 - 力扣&#xff08;LeetCode&#xff09; 思路 右视图是指从树的右侧看&#xff0c;对于每一层&#xff0c;只能看到该层最右边的节点。实现思路是&#xff1a; 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...