Python入门到精通(四)——Python函数

Python函数

一、函数的定义

二、函数的参数及返回值

1、函数的参数

 2、函数的返回值

三、函数说明文档

四、函数的嵌套调用

五、变量的作用域

六、综合案例


一、函数的定义

定义:

调用:

  • 函数:是组织好的,可重复使用的,用来实现特定功能的代码段。
  • input()、print()、str()、int()等都是Python的内置函数
  • 将功能封装在函数内,可供随时随地重复利用
  • 提高代码的复用性,减少重复代码,提高开发效率
  • 参数不需要时,可以省略,但括号不可以省略
  • 返回值不需要时,也可以省略

代码示例

def say_hi():
    print("欢迎来到CSDN!\n请出示您的邀请卡")


# 调用函数
say_hi()

输出

二、函数的参数及返回值

1、函数的参数

语法解析:

  • 函数定义中,提供的x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数
  • 参数之间使用逗号进行分隔
  • 函数调用中,提供的5和6,称之为:实际参数(实参),表示函数执行时真正使用的参数值
  • 传入的时候,按照顺序传入数据,使用逗号分隔
  • 传入参数的功能:在函数进行计算的时候,接受外部(调用时)提供的数据
  • 可以不使用参数,也可以使用任意N个参数

练习题

代码示例

# 练习题
def temperature(x):
    if x <= 37.5:
        print(f"您的体温是{x},体温正常,欢迎进入")
    else:
        print(f"您的体温是{x},体温异常,需要隔离")


temperature(36)
temperature(38)

输出

 2、函数的返回值

  • 返回值:函数在执行完成后,返回给调用者的结果
  • 通过return关键字,就能向调用者返回数据
  • 函数体在遇到return后就结束了,所以写在return后的代码不会执行
  • 如果没有使用return,默认返回None类型
  • 在if判断中,None等同于False
  • 定义变量,但暂时不需要变量有具体值,可以用None来代替

代码示例

# none类型
def say_hi():
    print("欢迎来到CSDN")


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

输出

三、函数说明文档

语法:

  • 定义完成后,输入三个 回车,会自动补全注释
  • 在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档
  • :param 用于解释参数
  • :return 用于解释返回值

代码示例

# 函数说明文档
def add(x, y):
    """
    输入三个“ 回车会自动补全注释
    :param x: 形参其中一个数字
    :param y: 形参另一个数字
    :return: 返回值是2者相加的结果
    """
    result = x + y
    return result


# 鼠标悬停在函数名上会显示说明文档
add(1, 2)

鼠标悬停示例

四、函数的嵌套调用

  • 嵌套:在一个函数中,调用另外一个函数
  • 过程:函数A中执行到调用函数B的语句,会将函数B全部执行完成后,继续执行函数A的剩余内容

代码示例

# 函数嵌套调用
def func_b():
    print("---2---")


def func_a():
    print("---1---")
    func_b()
    print("---3---")


func_a()

输出

五、变量的作用域

1、局部变量

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

2、全局变量

在函数体内、外都能生效的变量

3、global 关键字

使用 global关键字 可以在函数内部声明变量为全局变量

局部变量、全局变量示例

# 定义全局变量
num = 200


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


def test_b():
    num = 500  # 局部变量
    print(f"test_b:{num}")


test_a()
test_b()
print(num)

输出

global 关键字使用示例

# 定义全局变量
num = 200


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


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


test_a()
test_b()
print(num)

输出

六、综合案例

练习题

代码示例

# 综合案例
# 定义全局变量 money name
money = 500000
# 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\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退出程序

输出

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第04章_IDEA的安装与使用(上)(认识,卸载与安装,JDK相关设置,详细设置,工程与模块管理,代码模板的使用)

文章目录 第04章_IDEA的安装与使用&#xff08;上&#xff09;本章专题与脉络1. 认识IntelliJ IDEA1.1 JetBrains 公司介绍1.2 IntelliJ IDEA 介绍1.3 IDEA的主要优势&#xff1a;(vs Eclipse)1.4 IDEA 的下载 2. 卸载与安装2.1 卸载过程2.2 安装前的准备2.3 安装过程2.4 注册2…

浪之潮科技:动力恢复清积碳,尾气治理三元催化修复

针对汽车出现油耗增加、动力减弱以及尾气检测不合格等情况&#xff0c;深圳市浪之潮科技有限公司&#xff08;以下简称&#xff1a;浪之潮科技&#xff09;求真务实、勇于创新&#xff0c;独创两大系统六大部位——动力恢复清积碳、尾气治理三元催化修复&#xff0c;为广大车主…

大模型 RAG 面试篇

1.LLMs 存在模型幻觉问题&#xff0c;请问如何处理&#xff1f; 检索LLM。 先用问题在领域数据库里检索到候选答案&#xff0c;再用LLM对答案进行加工。 2.基于LLM向量库的文档对话 思路是怎么样&#xff1f; 加载文件读取文本文本分割文本向量化问句向量化在文本向量中匹配…

软件测试工程师简历项目经验怎么写?

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

探索世界,从一款好用的浏览器开始!

好用的浏览器分享 在这个数字化的时代&#xff0c;浏览器已经成为了我们生活中不可或缺的工具。从浏览新闻、社交媒体到工作学习&#xff0c;我们几乎无时无刻不在与浏览器打交道。那么&#xff0c;如何选择一款好用的浏览器呢&#xff1f;今天&#xff0c;我就来为大家分享几…

Java毕业设计-基于springboot的学习英语管理系统-第89期

获取源码资料&#xff0c;请移步从戎源码网&#xff1a;从戎源码网_专业的计算机毕业设计网站 项目介绍 基于springbootvue的医院管理系统&#xff1a;前端 vue、bootstrap、coreui&#xff0c;后端 maven、springmvc、spring、mybatis、redis&#xff0c;角色分为管理员、医…

2024年简历石沉大海,别投了,软件测试岗位饱和了....

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

SpringMVC传递数据给前台

SpringMVC有三种方式将数据提供给前台 第一种 使用Request域 第二种 使用Model&#xff08;数据默认是存放在Request域中&#xff09; 与第一种方式其实是一致的 第三种 使用Map集合&#xff08;数据默认是存放在Request域中&#xff09;

Appium 环境配置

Appium 是一个开源的、跨平台的测试框架&#xff0c;可以用来测试 Native App、混合应用、移动 Web 应用&#xff08;H5 应用&#xff09;等&#xff0c;也是当下互联网企业实现移动自动化测试的重要工具。Appium 坚持的测试理念&#xff1a; •无需用户对 App 进行任何修改或…

git提交代码到远端仓库的方法详解

一、何为git git就是版本控制器&#xff0c;就比如说你新建了一个git文件夹&#xff0c;里面用于存放你的C语言实习报告&#xff0c;现在要用git对该文件夹进行接管。当你修改了你的C语言实习报告点击保存之后&#xff0c;就用git的相关命令&#xff0c;提交给git&#xff0c;让…

Mybatis面试题(三)

MyBatis 面试题 21、MyBatis 实现一对多有几种方式,怎么操作的&#xff1f; 有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过在resultMap 里面的 collection 节点配置一对多的类就可以完成&#xff1b;嵌套查询是先查一个表,根据这个表里面的 结果的外键 id,…

Js-WebAPIs-事件流(三)

• 事件流与两个阶段说明 事件流指的是事件完整执行过程中的流动路径 说明&#xff1a;假设页面里有个div&#xff0c;当触发事件时&#xff0c;会经历两个阶段&#xff0c;分别是捕获阶段、冒泡阶段 简单来说&#xff1a;捕获阶段是 从父到子 冒泡阶段是从子到父 实际工作都是…

使用主动检索增强生成FLARE来实现更好的RAG

文章链接&#xff1a;https://arxiv.org/abs/2305.06983 项目代码&#xff1a;https://github.com/jzbjyb/FLARE 原文地址&#xff1a;Better RAG with Active Retrieval Augmented Generation FLARE 2023 年 11 月 18 日 欢迎深入探讨前瞻性主动检索增强生成 (FLARE)&…

对于随机生成图片接口浏览器走缓存的问题

前提场景 目前有一个api 他可以随机生成一张图片&#xff0c;我通过v-for循环一个Array渲染出来几个img 并且都调用了该接口&#xff0c;但是每个img都是一样的图片 具体代码如下 <div class"icon-group-box" v-for"item in groupList" :key"item…

22k+star一款自托管的开源的的好用的碎片化笔记软件 Memos超级详细部署教程

目录 1.拉取镜像 2.启动 3.体验 4.源码地址 1.拉取镜像 docker pull neosmemo/memos:stable 2.启动 创建目录 mkdir -p /opt/memos/ 启动 docker run -d --name memos -p 10006:5230 -v /opt/memos/:/var/opt/memos neosmemo/memos:stable 3.体验 浏览器输入下面地址…

linux perf工具使用

参考文章Linux性能调优之perf使用方法_perf交叉编译-CSDN博客 perf是一款Linux性能分析工具。比如打流性能优化的时候&#xff0c;就能够看到是哪些函数消耗的cpu高 那么linux如何编译perf工具呢&#xff1f; perf工具编译 进入perf目录下linux-3.16/tools/perf make ARCH…

class_12:析构函数

#include <iostream>using namespace std;class Myclass{ private:int* datas; public:Myclass(int size){datas new int[size];}~Myclass(){cout<<"析构函数被调用"<<endl;delete [] datas;} };int main() {cout << "Hello World!&qu…

Docker(八)高级网络配置

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 高级网络配置 注意&#xff1a;本章属于 Docker 高级配置&#xff0c;如果您是初学者&#xff0c;您可以暂时跳过本章节&#xff0c;直接学习…

PyTorch 内 LibTorch/TorchScript 的使用

PyTorch 内 LibTorch/TorchScript 的使用 1. .pt .pth .bin .onnx 格式1.1 模型的保存与加载到底在做什么&#xff1f;1.2 为什么要约定格式&#xff1f;1.3 格式汇总1.3.1 .pt .pth 格式1.3.2 .bin 格式1.3.3 直接保存完整模型1.3.4 .onnx 格式1.3.5 jit.trace1.3.6 jit.scrip…

小程序宿主环境-组件button

button <button>普通按钮</button> <button type"primary">主色调按钮</button> <button type"warn">警告按钮</button><button size"mini">普通按钮</button> <button type"primary&q…