【Python】函数进阶 ③ ( 函数作为参数传递 )

news2024/11/17 8:44:04

文章目录

  • 一、函数参数传递类型
  • 二、代码示例 - 函数参数传递类型





一、函数参数传递类型



之前介绍的函数 , 都是 接收具体的 变量 或 字面量 数据 作为参数 , 如 : 数字 / 布尔值 / 字典 / 列表 / 元组 等 ;

函数 也可以作为参数 , 传入另一个函数中 ;

在 Python 中,函数是一种可传递的实体 ;

这意味着可以将一个函数作为另一个函数的参数进行传递 ;

函数作为参数传递时 , 通常被称为 " 高阶函数 " ;

函数 作为参数 是 计算逻辑 的传递 , 不是传统的数据传递 ;


在下面的 caculate_num 函数中 , 接收一个函数参数 action ,

该参数使用了 函数调用语法 action(1, 2) 执行了一个函数操作 ,

action 可以使用函数调用语法 , 那么 action 必定也是一个函数 ;

caculate_num 函数体中的逻辑 , 由传入的 action 参数决定 , 可以进行加法操作 , 减法操作 等操作 ;

action 函数参数 , 也需要接收两个参数进行计算 , 下面的代码中 action 函数是加法操作 , 接收两个参数后进行加法操作 , 返回两个数字进行加法计算的结果 ;


代码示例 :

"""
函数多返回值 代码示例
"""


# 定义函数
def add(x, y):
    return x + y


# 函数中接收另外一个函数作为函数
def caculate_num(action):
    result = action(1, 2)
    print(result)


# 将 add 函数作为参数 传递给 caculate_num 函数
caculate_num(add)  # 3

执行结果 :

3




二、代码示例 - 函数参数传递类型



代码示例 :

"""
函数多返回值 代码示例
"""


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


# 定义函数 : 减法
def minus(x, y):
    return x - y


# 定义函数 : 乘法
def multiple(x, y):
    return x * y


# # 定义函数 : 除法
def division(x, y):
    return x / y


# 函数中接收另外一个函数作为函数
def caculate_num(action):
    result = action(4, 2)
    print(result)


# 将 add 函数作为参数 传递给 caculate_num 函数
caculate_num(add)  # 6

caculate_num(minus)  # 2

caculate_num(multiple)  # 8

caculate_num(division)  # 2.0

执行结果 :

D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
6
2
8
2.0

Process finished with exit code 0

在这里插入图片描述

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

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

相关文章

主成分分析——SPSS实例分析

主成分分析是用原始变量的线性组合来表示主成分,且主成分彼此之间互不相关,且能反映出原始数据的绝大部分信息。 一般来说,当研究的问题涉及到多变量且变量之间存在很强的相关性时,我们可考虑使用主成分分析的方法来对数据进行简化…

智能的突破或许在智能之外

人工智能已经取得了不少令人瞩目的成果,但是仍然存在着许多问题和挑战,这些问题和挑战也许只能通过跨学科的合作和人类的智慧来解决,因此智能的突破在智能之外。在人工智能的决策过程中,往往会缺乏人类的道德判断和社会责任感&…

2018年全国硕士研究生入学统一考试管理类专业学位联考英语(二)试题

2018 年全国硕士研究生入学统一考试 管理类专业硕士学位联考 英语(二)试卷 考生须知 1.考生必须严格遵守各项考场规则。 2.答题前,考生将答题卡上的“姓名”、“考生编号”等信息填写清楚,并与准考证上的致…

【SpringCloud】Eureka 案例上手稍微带点原理

文章目录 1. 前置工作1.1 搭建 user-server1.1.1 pom1.1.2 po,mapper,controller1.1.3 yml1.1.4 启动类1.1.5 启动并访问 1.2 搭建 order-server1.2.1 pom1.2.2 po mapper controller1.2.3 yml1.2.4 启动类1.2.5 启动并访问 1.3 两个服务通信 2. Eureka2…

Qt Xml的读、写、修改、删除

一、说明 Xml文件的创建、读取、修改、删除以下图格式为例。 二、导入xml QT core gui xml三、创建Xml void MainWindow::Xml_Write(QString path) {//! 打开或创建文件QFile file(path);if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) return; //! …

【MySQL篇】Select语句原理详解

文章目录 MYSQL体系结构模块详解架构分层连接层服务层存储引擎 SQL的执行流程连接查询缓存语法解析和预处理词法解析语法分析预处理器 查询优化器执行计划存储引擎存储引擎基本介绍如何选择存储引擎? 执行引擎举例说明 对于一个开发工程师来说,了解一下 …

C语言读写ini配置文件

环境 windows 10 64bitClion 2023.1 ini简介 ini 文件格式是一种用于保存配置信息的简单文本格式。它通常由多个节(section)组成,每个节包含多个键值对(key-value pair)。 下面是 ini 文件的基本语法规则 一个ini文件由多个节组成,每个节用方括号([])括起…

《Java黑皮书基础篇第10版》 第17章【笔记】

第十七章 二进制I/O 17.1 引言 文件可以不严谨的分类为文本文件和二进制文件。文本文件指的是可以用文件编辑器进行查看和修改的,二进制文件则不可以使用文本编辑器查看和修改。 例如,Test.java文件储存在文本文件中,因此可以用文本编辑器…

MapReduce程序基本架构

MapReduce程序是以(键/值)对的形式来处理数据的,即可以通过以下的形式来表示: map: (K1,V1) ➞ list(K2,V2) reduce: (K2,list(V2)) ➞ list(K3,V3) 不令人惊奇的是,这是一种超越一般数据的数据流表示形式。在本文中…

使用PyMC进行时间序列分层建模

在统计建模领域,理解总体趋势的同时解释群体差异的一个强大方法是分层(或多层)建模。这种方法允许参数随组而变化,并捕获组内和组间的变化。在时间序列数据中,这些特定于组的参数可以表示不同组随时间的不同模式。 今天,我们将深…

ood的5C解题法(1)----管理类面试对象设计

管理类 概念 可以模拟/代替管理员日常工作的系统 下面用停车场系统做演示 答题流程 Clarify What:除题目中的名词外,从管理的名词考虑 parking lot是什么类型的?如果楼有多层,停车位也是多层,则parking lot->pa…

Windows Server 2019 OVF, updated Jun 2023 (sysin) - VMware 虚拟机模板

Windows Server 2019 OVF, updated Jun 2023 (sysin) - VMware 虚拟机模板 2023 年 6 月版本更新,现在自动运行 sysprep,支持 ESXi Host Client 部署 请访问原文链接:https://sysin.org/blog/windows-server-2019-ovf/,查看最新…

5、产品经理的工作职责OR主要工作技能和工具

1、产品经理的工作职责 我们通过一个案例来了解产品经理的工作职责。 老板让你给他点餐,你应该怎么做?你需要考虑哪一些方面的问题? 例如:你预算多少,预算是十块钱还是100块还是1000块。有没有忌口,口味…

【MYSQL篇】Update语句原理详解

文章目录 前言缓冲池Buffer PoolInnoDB 内存结构redo logundo logBinlog 总结 前言 前面的文章我们已经对MySQL的查询语句的执行流程进行了说明,感兴趣的可以去看看: 【MySQL篇】Select语句原理详解 本篇文章我们来聊聊 MySQL更新语句的执行原理。更新…

Win7系统提示Windows Defender无法扫描选定的文件解决方法

Win7 64位系统提示“Windows Defender无法扫描选定的文件”怎么办呢?使用Windows Defender扫描文件,结果弹出如下图窗口,该怎么解决呢,参考下文,一起来解决Win7系统提示“Windows Defender无法扫描选定的文件”的解决方法。 原因分析: 这是因为开启Defender扫描压…

java的序列化注解Serial、序列化版本号serialVersionUID

例如,jdk源码NTLMException类的定义,其中涉及到了序列化注解Serial和序列化版本号字段serialVersionUID: 序列化注解java.io.Serial: 序列化注解java.io.Serial是在javaSE-14版本引入的。通常注解实现了序列化类的序列化相关的函…

【JUC进阶】02. volatile关键字

目录 1、回顾JMM 1.1、可见性(Visibility) 1.2、原子性(Atomicity) 1.3、有序性(Ordering) 2、volatile 2.1、保证可见性 2.2、不保证原子性 2.3、防止指令重排 2.4、什么时候使用volatile 3、小…

微服务中「组件」集成

有品:There is no silver bullet; 一、简介 在微服务工程的技术选型中,会涉及到很多组件的集成,最常用包括:缓存、消息队列、搜索、定时任务、存储等几个方面; 如果工程是单服务,对于集成组件…

有趣的数学 关于自然常数e

一、e的值 自然常数(也称欧拉数)e是数学中最重要的数字之一。 2.7182818284590452353602874713527...... 二、从复利理解e 设想你在一家银行有一个银行账户,该银行付给你一个慷慨的利息年利率12%,一年计一次复利.你将一笔初始存款…

测试(二)

1.软件测试的生命周期 需求分析→测试计划→ 测试设计→ 测试开发→ 测试执行→ 测试评估 2.如何描述一个Bug 3.Bug的优先级 1、Blocker(崩溃): 阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数…