在字典中存储函数 [Python]

2024-01-11

我目前正在构建一个应用程序,我需要迭代一系列基本执行相同操作的步骤,从而节省很少量的代码(约 15 行)。步骤的数量将根据项目的配置方式而有所不同,因此对我来说为每个潜在实例创建单独的函数似乎有点愚蠢。

在 JavaScript 中,我会做这样的事情:

var switches = [true, true, false, true];

var holder = {
    0: function() { /* do step0 */ }
    1: function() { /* do step1 */ }
    2: function() { /* do step2 */ }
    3: function() { /* do step3 */ }
    // ...etc...
}

for (var i = 0; i < switches.length; i++)
    if (switches[i])
        holder[i]();

有没有办法在 python 中做类似的事情?我唯一能想到的是这样的:

switches = [True, True, False, True]

class Holder(object):
    @staticmethod
    def do_0():
        # do step0

    @staticmethod
    def do_1():
        # do step 1

    # ...etc...

    def __repr__(self):
        return [self.do_0, self.do_1, ...]

for action in Holder:
    action()

如果我有大量步骤,这看起来效率非常低。有没有更好的方法来解决这个问题?


您可以按如下方式执行此操作:

# define your functions
def fun1():
    print("fun1")

def fun2():
    print("fun2")

def fun3():
    print("fun3")


switches = [True, False, True];

# put them in a list (list makes more sense than dict based on your example)
func_list = [fun1, fun2, fun3]

# iterate over switches and corresponding functions, and execute 
# functions when s is True    
for s,f in zip(switches, func_list):
    if s: f() 

这只是一种方法。还有很多其他的。例如根据需要使用 lambda、dict 等。

如果你的函数只有一行,要使用 lambda,你可以这样做:

func_list = [lambda: print("lambda1"), 
             lambda: print("lambda2"), 
             lambda: print("lambda1")]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在字典中存储函数 [Python] 的相关文章

  • Docker:通过 Gunicorn 运行 Flask 应用程序 - Worker 超时?表现不佳?

    我正在尝试创建一个用Python Flask编写的新应用程序 由gunicorn运行 然后进行dockerized 我遇到的问题是 docker 容器内的性能非常差 不一致 我最终得到了响应 但我不明白为什么性能会下降 有时我会在日志中看到
  • Selenium 网页抓取与动态内容和隐藏数据表上的美丽汤

    真的需要这个社区的帮助 我正在使用 Selenium 和 Beautiful Soup 对 Python 中的动态内容进行网页抓取 问题是定价数据表无法解析为 Python 即使使用以下代码 html browser execute scr
  • PHP随机输出数组元素

    我如何从大约 20 个元素的数组中随机回显 5 个元素 Thanks 这有效吗 values array rand input 5 或者 作为更灵活的功能 function randomValues input num 5 return a
  • keras 预测内存交换无限期增加

    我使用keras实现了一个分类程序 我有一大组图像 我想使用 for 循环来预测每个图像 然而 每次计算新图像时 交换内存都会增加 我尝试删除预测函数内部的所有变量 并且我确信该函数内部存在问题 但内存仍然增加 for img in ima
  • 需要将焦点放在react中的div上

    我有一个之前用 H1 标签包裹的文本 页面加载后 我需要专注于该文本 为了方便起见 我将它包装在 div 中 render const translate billing primaryContactSelection true this
  • 创建并初始化具有连续名称的类的实例

    我有一个BankAccount班级 我试图创建这个类的多个实例并将它们放入一个数组中 例如 accounts Ba1 BankAccount new 100 Ba2 BankAccount new 100 我想初始化包含大量实例的数组 假设
  • 如何在 Tkinter 的 Button 小部件中创建多个标签?

    我想知道如何在 Tkinter 中创建具有多个标签的按钮小部件 如下图所示 带有子标签的按钮 https i stack imgur com jOZRw jpg正如您所看到的 在某些按钮中有一个子标签 例如按钮 X 有另一个小标签 A 我试
  • 如何列出特定服务器的所有成员?

    我的代码是 const list client guilds find id 335507048017952771 for user of list users console log user 1 username 这实际上没有任何作用
  • queue.js 是如何工作的?

    我一直试图理解如何Mike Bostock 的queue js https github com mbostock queue blob master queue js有效 但我看不出它是如何工作的 我不明白的部分是代码如何设法继续执行回调
  • 掩码输入数字 - 百分比

    如何通过 jQuery 创建具有百分比的数字掩码输入 我是否让输入仅接受三个数字 并在用户完成输入时在数字后添加百分号 keyup 我不使用插件 例子 1 Or 30 Or 99 Or 100 Or 200
  • 位图太大 as3

    在AS3中 我从zip文件加载png nochump的zip库通过ByteArray到Loader png 的宽度最大可达 45k 像素 但高度仅为 120 像素 这在 Flash 中产生了一个问题 因为图像的宽度只能约为 8000 像素
  • 在 gulp 和 browsersync 问题中观看新文件

    我使用 browsersync 在文件更改时重新加载浏览器 而且它工作完美 但是当我创建新文件 例如 html scss js 时 bowsersync 不起作用 如何解决这个问题 gulpjs Browser Sync gulp task
  • 在 Nest.js 中发送之前如何格式化响应?

    我按照文档进行操作 并能够添加用于响应映射的拦截器 我想要一致的 json 格式输出作为响应 我怎样才能用拦截器或其他比这种方法更好的方法来实现这一点 statusCode 201 message Custom Dynamic Messag
  • 如何使 CSS 动画/过渡以固定速度而不是固定持续时间播放? [复制]

    这个问题在这里已经有答案了 我有一个 CSS 动画 可以使元素沿直线移动未定义的距离 据我所知 动画具有固定的持续时间 因此无论元素必须移动多远 动画始终需要相同的时间来运行 我该如何制作才能使动画没有固定的duration 但有固定的运动
  • ExtJS:简单表单忽略 formBind

    我有一个小问题让我发疯了好几天 我有一个表单面板 Ext define EC view PasswordPanel extend Ext form Panel alias widget pwdpanel bodyPadding 15 ini
  • 带有整数的 np.sqrt 和 where 条件返回错误结果

    当我将 numpy sqrt 方法应用于带有 a 的整数数组时 我得到了奇怪的结果where健康 状况 见下文 对于整数 a np array 1 4 9 np sqrt a where a gt 5 Out 3 array 0 0 5 3
  • 如何在 Python 中解析损坏的 XML?

    我无法影响的服务器发送的 XML 非常损坏 具体来说 Unicode WHITE STAR 将被编码为 UTF 8 E2 98 86 然后使用 Latin 1 转换为 HTML 实体表 我得到的是 acirc 98 86 9 个字节 位于声
  • Elastic Beanstalk 上的 Django + MySQL - 查询 MySQL 时出错

    当我在 Elastic beanstalk 上托管的 Django 应用程序上查询 MySQL 时 出现错误 错误说 admin login 处出现操作错误 1045 用户 adminDB 172 30 23 5 的访问被拒绝 使用密码 Y
  • 如何指定一个变量作为类或类实例的成员变量?

    在最新的 Python 2 7 x 中 给定类定义内的任何成员变量 该成员变量是否始终处于类级别 因为它是由该类的所有实例共享的单个变量 在类的定义中 如何指定 类定义中的哪些成员变量属于该类 因此由该类的所有实例共享 以及 哪些属于该类的
  • 在 pip 中为 Flask 应用程序构建 docker 映像失败

    from alpine latest RUN apk add no cache python3 dev pip3 install upgrade pip WORKDIR backend COPY backend RUN pip no cac

随机推荐

  • Django:自定义序列化选项?

    我正在开发一个基于 Django 的 Web 服务 并且正在尝试找出进行序列化的最佳方法 然而 棘手的要求是我希望对响应的格式和包含的字段有几乎完全的控制 例如 Django 序列化器 不幸的是 它包括wadofstuff 序列化器 htt
  • 未定义的方法“空白?”对于“123”:字符串(NoMethodError)

    当我检查 ruby 中的类变量时 我收到这个奇怪的错误 未定义的方法 空白 对于 123 字符串 NoMethodError 我所做的就是Employee set id blank 有什么想法为什么会发生这种情况吗 Thanks The b
  • 如何从 std::integer_sequence 初始化静态数组?

    我为枚举制作了一个符合以下规则的可迭代生成器 Enum 是一个整数序列 没有间隙 给定枚举的最后一个元素不是实际的枚举元素 该类看起来像这样 template
  • 使用 Spark 安全查询。带参数的sql查询表示法

    这个问题是指构建 pyspark 作业来处理大型数据集 Spark提供了多种查询方式 函数表示法和 SQL 表示法 这个问题仅限于 Spark SQL 符号 模式 一个常见的模式是 df spark sql f select from so
  • docker-compose up 和标准输入上的用户输入

    有人可以解释 也许给出解决方法 docker compose 的以下行为吗 给定以下文件 Dockerfile FROM alpine 3 8 COPY entrypoint sh entrypoint sh ENTRYPOINT entr
  • 转发初始值设定项列表表达式

    初始化列表表达式对于初始化 C 容器来说非常方便 std vector
  • 在 Django 中使用数据库视图

    我看到了问题我可以在 django 中使用数据库视图作为模型吗 https stackoverflow com questions 507795 can i use a database view as a model in django并
  • 在WKWebView中加载html文本

    我用这个代码来加载我的html包含文本的文件WKWebView do guard let filePath Bundle main path forResource readBookNumber ofType html else print
  • 选中时更改复选框标签的颜色

    我试图在选中复选框时更改其标签的颜色 我之前在其他网站上做过此操作 但由于某种原因 我的代码无法在这个网站上运行 我正在使用 Drupal 7 和 bootstrap 3 我的复选框如下所示 div class checkbox div
  • 检测 JPG 图像的文件结尾

    我通过 TCP 连续地将许多图像从我的服务器发送到客户端 现在在客户端 我应该如何有效地检测到这是一个图像的结尾 以便我可以将其保存到文件系统 然后处理下一个图像等等 嗯 不能保证您不会在 jpeg 图像中找到 FFD9 找到 jpeg 图
  • RestSharp 单元测试 NUnit Moq RestResponse 空引用异常

    我在尝试将 Moq 与 RestSharp 结合使用时遇到一些挑战 也许这是我对 Moq 的误解 但由于某种原因 我在尝试模拟 RestResponse 时不断收到空引用异常 这是我的单元测试 Test public void GetAll
  • AWS Cognito 用户池如何防御暴力攻击

    我将使用 AWS Cognito 用户池产品作为应用程序的用户目录 但有几个问题 Amazon 是否向 Cognito 用户池发出限制请求 如果是 限制调用的速率限制是多少 Cognito 如何防御登录名 密码的暴力攻击 经过几个小时的搜索
  • 生成maven项目继承/聚合图

    任何人都知道是否可以轻松生成 Maven 项目继承 聚合图 如下面的链接中所示 http sonatype com books maven book reference figs web pom real multi png http so
  • 使用 Google Analytics 进行 Vuejs 事件跟踪

    我希望跟踪按钮和链接上的谷歌分析事件 通常在 jquery 中 我会传递数据属性中的值并获取它们并调用所需的函数 我知道我不应该使用数据属性 所以我正在寻找执行此操作的最佳方法 可以有多个按钮使用不同的数据用途 属性 执行不同的跟踪 所以我
  • 加入条件查询给出错误“无法找到属性”

    我有两张表 Student 和 Courses 我必须连接两个表并获取特定字段 class Student extends Parent Long id Cache usage CacheConcurrencyStrategy READ W
  • char[] 和 char* 之间的区别? [复制]

    这个问题在这里已经有答案了 可能的重复 C char var 和 char var 之间的区别 https stackoverflow com questions 1880573 c difference between char var
  • 运行我的第一个 java 应用程序时出现 InvalidModuleDescriptorException

    我已经开始学习 Java 并在尝试运行我的第一个程序时遇到了问题 如下所示 public class HelloWorld public static void main String args TODO Auto generated me
  • Rcpp:无法打开共享对象文件

    我正在尝试开发一个 R 包 它利用阵列火 https github com arrayfire arrayfire 感谢 Rcpp 库 我已经开始编写示例代码 让我们将其命名为你好世界 cpp 看起来像这样 include
  • SQLAlchemy 按字段排序()

    我试图按字段对 SQLAlchemy ORM 对象进行排序 但使用特定的值顺序 既不是升序也不是降序 如果我在 MySQL 上执行此查询 它看起来像 SELECT letter FROM alphabet table WHERE lette
  • 在字典中存储函数 [Python]

    我目前正在构建一个应用程序 我需要迭代一系列基本执行相同操作的步骤 从而节省很少量的代码 约 15 行 步骤的数量将根据项目的配置方式而有所不同 因此对我来说为每个潜在实例创建单独的函数似乎有点愚蠢 在 JavaScript 中 我会做这样