从另一个函数名计算一个函数名

2024-02-25

在 python 3.4 中,我希望能够出于测试目的制作一个非常简单的调度表。这个想法是有一个字典,键是要测试的函数名称的字符串,数据项是测试函数的名称。

例如:

myTestList = (
    "myDrawFromTo",
    "myDrawLineDir"
)

myTestDict = {
    "myDrawFromTo": test_myDrawFromTo,
    "myDrawLineDir": test_myDrawLineDir
}

for myTest in myTestList:
    result = myTestDict[myTest]()

我的想法是我在某个地方有一个函数名称列表。在此示例中,我手动创建一个字典,将这些名称映射到测试函数的名称。测试函数名称是函数名称的简单扩展。我想从函数名称列表中计算整个字典(这里是myTestList).

或者,如果我可以在没有字典的情况下做同样的事情,那也很好。我尝试从 myTestList 中的条目构建一个新字符串,然后使用local()建立通话,但没有任何运气。字典的想法来自于Python 3.x 文档 https://docs.python.org/3/.


问题有两个部分。

最简单的部分只是添加前缀'text_'在每个字符串上:

tests = {test: 'test_'+test for test in myTestDict}

更困难的部分实际上是按名称查找函数。那种事就是usually这是一个坏主意,但是您遇到了一种通常有意义的情况(生成测试)。您可以通过查找它们来做到这一点你的模块的全局字典 https://docs.python.org/3/library/functions.html#globals, 像这样:

tests = {test: globals()['test_'+test] for test in myTestList}

如果测试位于模块全局范围之外的其他地方,则同一想法会有不同的情况。例如,将它们设置为类的所有方法可能是一个好主意,在这种情况下,您可以这样做:

tester = TestClass()
tests = {test: getattr(tester, 'test_'+test) for test in myTestList}

(虽然代码更有可能在里面TestClass,所以它将使用self而不是tester.)


当然,如果您实际上不需要该字典,您可以将理解更改为显式for陈述:

for test in myTestList:
    globals()['test_'+test]()

还有一件事:在重新发明轮子之前,您是否看过测试框架内置于标准库中 https://docs.python.org/3/library/development.html, or ?

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

从另一个函数名计算一个函数名 的相关文章

  • 使用 Django 将文件异步上传到 Amazon S3

    我使用此文件存储引擎在上传文件时将文件存储到 Amazon S3 http code welldev org django storages wiki Home http code welldev org django storages w
  • Matplotlib:如何有效地将大量线段着色为独立渐变

    Python 绘图库 如何有效地将大量线段着色为独立渐变 已经 阅读this https stackoverflow com questions 8500700 how to plot a gradient color line in ma
  • 创建上下文后将 jar 文件添加到 pyspark

    我正在笔记本上使用 pyspark 并且不处理 SparkSession 的创建 我需要加载一个包含一些我想在处理 rdd 时使用的函数的 jar 您可以使用 jars 轻松完成此操作 但在我的特定情况下我无法做到这一点 有没有办法访问sp
  • 使用 Paramiko 进行 DSA 密钥转发?

    我正在使用 Paramiko 在远程服务器上执行 bash 脚本 在其中一些脚本中 存在与其他服务器的 ssh 连接 如果我只使用 bash 不使用 Python 我的 DSA 密钥将被第一个远程服务器上的 bash 脚本转发并使用 以连接
  • 尝试在 Anaconda 上安装 pygame 时,Python 3.x 降级为 Python 2.7

    我正在使用 Anaconda Python 3 我正在尝试安装 pyOpenGL Vpython 和 pygame 安装 pyOpenGL 和 Vpython 就可以使用conda install 当我尝试安装 Pygame 时 使用con
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

    我在 Windows 7 机器上使用 Python 2 7 Anaconda 安装进行数据分析和科学计算 当新的库发布时 例如新版本的 pandas patsy 等 您建议我如何测试新版本与现有代码的兼容性 是否可以在同一台机器上安装两个
  • Python将文本文件解析为嵌套字典

    考虑以下数据结构 HEADER1 key value key value HEADER2 key value key value HEADER3 key value HEADER4 key value key value 原始数据中没有缩进
  • 根据其他单元格值更改多个单元格值

    我想更改包含的单元格moving to movingToOpenor movingToClose基于下一个单元格中给出的状态 有时循环会被中断并且不会从open to close or close to open 这是我当前的数据框 Dat
  • Paste.httpserver 并通过 HTTP/1.1 Keep-alive 减慢速度;使用 httperf 和 ab 进行测试

    我有一个基于paste httpserver 的Web 服务器作为HTTP 和WSGI 之间的适配器 当我使用 httperf 进行性能测量时 如果每次使用 num conn 启动一个新请求 我每秒可以执行超过 1 000 个请求 如果我使
  • 使用 for 循环创建一系列元组

    我已经搜索过 但找不到答案 尽管我确信它已经存在了 我对 python 很陌生 但我以前用其他语言做过这种事情 我正在以行形式读取数据文件 我想将每行数据存储在它自己的元组中 以便在 for 循环之外访问 tup i inLine wher
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • 从 Flask 运行 NPM 构建

    我有一个 React 前端 我想在与我的 python 后端 API 相同的源上提供服务 我正在尝试使用 Flask 来实现此目的 但我遇到了 Flask 找不到我的静态文件的问题 我的前端构建是用生成的npm run build in s
  • 如何查找或安装适用于 Python 的主题 tkinter ttk

    过去 3 个月我一直在制作一个机器人 仅用代码就可以完美运行 现在我的下一个目标是为它制作一个 GUI 但是我发现了一些障碍 主要的一个是能够看起来不像一个 30 年前的程序 我使用的是 Windows 7 我仅使用 Python 3 3
  • 是否需要关闭没有引用它们的文件?

    作为一个完全的编程初学者 我试图理解打开和关闭文件的基本概念 我正在做的一项练习是创建一个脚本 允许我将内容从一个文件复制到另一个文件 in file open from file indata in file read out file
  • Ubuntu systemd 自定义服务因 python 脚本而失败

    希望获得有关 Ubuntu 中的 systemd 守护进程服务的一些帮助 我写了一个 python 脚本来禁用 Dell XPS 上的触摸屏 这更像是一个问题 而不是一个有用的功能 该脚本可以工作 但我不想一直启动它 这就是为什么我想到编写
  • 在骨架图像中查找线 OpenCV python

    我有以下图片 我想找到一些线来进行一些计算 平均长度等 我尝试使用HoughLinesP 但它找不到线 我能怎么做 这是我的代码 sk skeleton mask rows cols sk shape imgOut np zeros row
  • 使用 Python 将连续日期分组在一起

    Given dates datetime 2014 10 11 datetime 2014 10 1 datetime 2014 10 2 datetime 2014 10 3 datetime 2014 10 5 datetime 201
  • 如何在亚马逊 EC2 上调试 python 网站?

    我是网络开发新手 这可能是一个愚蠢的问题 但我找不到可以帮助我的确切答案或教程 我工作的公司的网站 用 python django 构建 托管在亚马逊 EC2 上 我想知道从哪里开始调试这个生产站点并检查存储在那里的日志和数据库 我有帐户信
  • 如何编写一个接受 int 或 float 的 C 函数?

    我想用 C 语言创建一个扩展 Python 的函数 该函数可以接受 float 或 int 类型的输入 所以基本上 我想要f 5 and f 5 5 成为可接受的输入 我认为我不能使用if PyArg ParseTuple args i v

随机推荐

  • 相当于 PHP multi_query 的 Codeigniter 是什么

    使用 PHP 我编写了一个像这样的多重查询 MySQL string UPDATE table SET name joe WHERE ID 1 MySQL string UPDATE table SET name Jane WHERE ID
  • tstr在一轮中拆分到不同的列

    我有一个如下表 myDT lt fread id other strformat content 1 other1 A B a1 b1 2 other2 A C a2 c2 3 other3 B A C b3 a3 c3 4 other4
  • Objective-C 运行时如何检索类和方法的列表?

    如果我得到以下 Objective C 源文件 test m import
  • 如何在 Kotlin 中解析 JSON?

    我从服务接收到一个相当深的 JSON 对象字符串 我必须将其解析为 JSON 对象 然后将其映射到类 如何将 JSON 字符串转换为 Kotlin 中的对象 在映射到各个类之后 我使用了 Jackson 的 StdDeserializer
  • 使用斯坦福 NER 从文本文档中提取地址?

    我正在寻找斯坦福大学NER http nlp stanford edu software CRF NER shtml并考虑使用 JAVA API 从文本文档中提取邮政地址 该文件可以是任何包含邮政地址部分的文件 例如水电费 电费 所以我的想
  • NSRefreshedObjectsKey 的用途

    In a NSManagedObjectContextObjectsDidChangeNotification通知 我有时会收到NSRefreshedObjectsKey key 我明白刷新的对象 https developer apple
  • puma 是唯一的多线程 Rails 4 http 服务器吗?

    我已经将我们的堆栈转换为 Rails 4 是的 我希望利用线程安全代码 Puma 的工作是起床 停止它似乎是一个不同的问题 Puma 是唯一的多螺纹导轨吗 Thin gt EventMachine Unicorn gt Forking Pu
  • git:补丁没有有效的电子邮件地址

    我有一个补丁文件 我想将此补丁应用到 git 存储库中的代码 当我使用 subversion 时 这个过程非常简单 右键 gt tortoise svn gt 应用补丁 它总是按我的预期工作 但我不能使用 git 来做到这一点 Git 不应
  • EasyAdmin 3.X - 如何查看相关实体`toString`而不是列表中关联的数量?

    我有一个实体Product与实体具有多对多关系Category ORM ManyToMany targetEntity App Domain Category inversedBy stalls private categories ret
  • ADT什么时候将BuildConfig.DEBUG设置为false?

    在最新版本的 ADT r17 中添加了生成常数BuildConfig DEBUG这是根据构建类型设置的 我遇到的问题是它永远不会设置为 false 我希望它在执行 Android 工具 gt 导出签名应用程序包 时发生变化 但它对我来说没有
  • 替换 Word 2003 文档中的 MergeFields 并保持样式

    我一直在尝试创建一个库来替换 Word 2003 文档上的 MergeFields 一切正常 除了在替换时丢失了应用于该字段的样式之外 有没有办法保留它 这是我用来替换字段的代码 private void FillFields2003 st
  • git 如何跳转到第一个提交? [复制]

    这个问题在这里已经有答案了 如何跳转到 git 存储库中的第一个提交 另外 有没有办法通过网站在Github上做到这一点 要进行存储库的第一次提交 请执行以下操作 git checkout master git log reverse 输出
  • Jquery加载然后编辑加载的内容

    我正在使用 Jquery 加载 然后一旦内容加载到 div 中 我想将一些标签更改为语言相关变量 我的问题是我必须使用 settimeout 来让脚本等待足够长的时间以便元素准备好编辑 当我使用回调函数参数时 我想要编辑的元素显然还没有准备
  • 用作 ng-if 的指令 (Angular 2)

    我正在尝试创建一个作为 ngIf 工作的指令来控制是否允许具有正确权限的用户查看特定内容 如下所示 div h3 You are allow to see this h3 div 我正在阅读有关如何做到这一点的信息 并发现了这一点doc h
  • Python 中精确的循环计时

    For 这个项目 http www samplerbox org我正在设计一个音序器 鼓机 它应该能够以精确的速度发送 MIDI 音符 示例 每 2 秒 16 个音符 即在音乐术语中 每小节 16 个 1 16 音符 BPM 120 即每
  • 为什么显示名称未显示在日历活动参加者中?

    我使用以下代码要点成功检索日历活动参加者 require once DIR vendor autoload php putenv GOOGLE APPLICATION CREDENTIALS DIR mt service account j
  • npm 只是不会安装 Node sass

    我第一次遇到这个问题是在尝试使用 ionic 时 它需要其模板的依赖关系 然后 当我尝试自己使用 npm 安装 node sass 时 问题仍然存在 这是在Windows 10 Version 1703 both nodejs 6 11 3
  • 从 Android 将联系人插入 SIM 卡

    我在尝试将 Android 联系人应用程序中存在的联系人复制到 SIM 卡时遇到问题 以下是代码 ContentValues cv new ContentValues cv put tag cName cv put number cNumb
  • 使用正则表达式,如何替换没有字符的空格?

    如何从正则表达式中替换许多空 空白字符 前任 div class someClass bunch of elements content div
  • 从另一个函数名计算一个函数名

    在 python 3 4 中 我希望能够出于测试目的制作一个非常简单的调度表 这个想法是有一个字典 键是要测试的函数名称的字符串 数据项是测试函数的名称 例如 myTestList myDrawFromTo myDrawLineDir my