使用自定义名称创建 Python 动态函数

2023-12-07

如果这个问题已经提出并得到回答,我们深表歉意。 我需要做的概念非常简单,但不幸的是我无法在网上找到答案。

我需要在运行时使用自定义名称在 Python (Python2.7) 中创建动态函数。每个函数的主体也需要在运行时构造,但对于所有函数来说(几乎)都是相同的。

我从一份名单开始。

func_names = ["func1", "func2", "func3"]

请注意,func_name 列表可以保存任意名称的列表,因此名称不会简单地是 func1、func2、func3,...。

我希望结果是:

    def func1(*args):
        ...

    def func2(*args):
        ...

    def func3(*args):
        ...

我需要这样做的原因是每个函数名称对应一个测试用例,然后从外部世界调用该测试用例。

update: 没有用户输入。我正在连接一个更大模块的两端。一端确定测试用例是什么,除其他外,还填充测试用例名称列表。另一端是函数本身,它必须与测试用例的名称进行 1:1 映射。所以我有测试用例的名称,我知道我想对每个测试用例做什么,我只需要创建具有测试用例名称的函数。由于测试用例的名称是在运行时确定的,因此基于这些测试用例的函数创建也必须在运行时确定。

update:我还可以将这个自定义命名函数包装在一个类中,如果这会让事情变得更容易的话。

我可以将函数的内容硬编码在字符串中(因为它们几乎相同),或者我可以将其基于先前定义的基类。只需知道如何使用此内容填充函数即可。

例如:

    func_content = """
                   for arg in args:
                       print arg
                   """

提前致谢,

Mahdi


对于您所描述的,我认为您不需要深入研究 eval 或宏 - 通过闭包创建函数实例应该可以正常工作。例子:

def bindFunction1(name):
    def func1(*args):
        for arg in args:
            print arg
        return 42 # ...
    func1.__name__ = name
    return func1

def bindFunction2(name):
    def func2(*args):
        for arg in args:
            print arg
        return 2142 # ...
    func2.__name__ = name
    return func2

但是,您可能希望按名称将这些函数添加到某个范围,以便您可以按名称访问它们。

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

使用自定义名称创建 Python 动态函数 的相关文章

随机推荐

  • Oracle Apex 18.1 交互式网格 (IG) 以编程方式设置过滤器?自定义 IG 搜索

    有没有办法通过 Javascript 或 PL SQL API 在 Oracle Apex 中为 IG 设置过滤器 在进行研究时我偶然发现APEX IG 5 1 4 食谱或一些博文如何破解 APEX 交互式网格系列用于使用 Javascri
  • Git post-receive 挂钩不会从 master 中删除已删除的文件

    我在我的服务器上创建了一个裸 git 存储库 并设置了以下 post receive 挂钩这个博客 bin bash while read oldrev newrev ref do branch echo ref cut d f3 if m
  • 如何在 Perl 中进行自省?

    在 Perl OOP 中 如何转储此类及其父类中的所有方法 字段 my self 我看到了很多上面的构造函数 那么 什么是 我有 Java OOP 背景 如果你的解释能够遵循Java领域 我会更容易理解 What is See perldo
  • 不在 gridview 中显示日期时间最小值

    given public class Customer public int Id get set public string FirstName get set public DateTime Birthdate get set 我有一个
  • 使用reducebykey时出错:int对象不可订阅

    我收到错误 int 对象不可订阅 执行以下脚本时 element reduceByKey lambda x y x 1 y 1 with element 是一个键值 RDD value 是一个元组 输入示例 A toto 10 A titi
  • 如何为 iPhone 设置视口元以正确处理旋转?

    所以我一直在使用 让我的 HTML 内容在 iPhone 上完美显示 它工作得很好 直到用户 将设备旋转到横向模式 其中显示仍限制为 320 像素 有没有一种简单的方法来指定一个视口 该视口会随着用户更改而变化 设备方向 或者我必须求助于
  • 对于终端应用程序来说,什么是好的 Java 类诅咒库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想编写一个进行屏幕操作的 Java 终端应用程序 是否有任何好的库可以让您像 nix C 世界中的诅咒一样操作屏幕 我正在寻找的最小功能是窗口和用
  • 对多个任意过滤条件使用 tidy eval

    我想用整齐的评价编写多个完全灵活的过滤条件 一个相关但不太复杂的问题已解决在这个 Stackoverflow 问题中 以下代码 改编自上述其他问题 正在运行 它将两个过滤条件应用于gapminder数据集 并返回过滤后的数据 library
  • GAE 通过 app.yaml、python 装饰器或 users.get_current_user 强制登录?

    我在 GAE 应用程序的 app yaml 配置文件中使用 登录 选项 看起来像这样 url admin script myapp app login admin url script myapp app login required 更新
  • Pandas 用最后一个已知值填充空尾随值

    我有几个具有不同结束时间段的专栏 需要用最后一个已知值填充空数据 有没有一种 Pandas 方法可以做到这一点 而无需在结束日期上循环 我需要过去 4 个月的 Gain sum y 等于 57129 0 gain sum x gain su
  • JSF - @PostConstruct 可以使用 ajax 调用来阻止 setter 方法吗?

    我想这个问题从标题就已经很清楚了 这是我真正的豆子 ManagedBean name selector RequestScoped public class Selector private String profilePage PostC
  • “静态只读”与“常量”

    我读过有关const and static readonly字段 我们有一些只包含常量值的类 它们用于我们系统中的各种事物 所以我想知道我的观察是否正确 这些常数值是否应该始终是static readonly对于所有公开的事情 并且只使用c
  • 将选项卡名称和 ConqueShell 与 Vim 会话一起保存

    有没有办法让 vim 保存选项卡名称 通过分配选项卡名称脚本 和 或终端仿真器 通过设置康克外壳脚本 发出后 mksession fileName 命令 观察下面 放大 我在左侧有一个工作会话 并且通过vim S fileName命令 在右
  • Spark.sql.shuffle.partitions 到底指什么?

    到底是做什么的spark sql shuffle partitions参考 我们谈论的是宽变换结果的分区数量 还是中间发生的事情 例如宽变换结果分区之前的某种中间分区 因为根据我的理解 根据广泛的转变 我们有 Parents RDDs gt
  • 无法推导出模板参数(向量、std::function)

    我创建了一个模板化函数 我试图自动推导模板参数 MCVE 编译它 template
  • 当隔离被杀死时,颤振隔离内的计时器不会停止

    我有一个应用程序使用 API 调用将操纵杆位置数据上传到网络服务器 当操纵杆移动时会调用此方法 如果操纵杆不在中心 它将停止任何先前运行的隔离并启动新的隔离 void onJoystickMoved double angle double
  • 在 FormFlows - Bot Framework 中添加另一个 Quit 关键字

    是否可以使用 Bot Framework 更改 FormDialog 中退出突击队的关键字 我想在键入某个单词时抛出 FormCanceledException 不使用英语作为语言 如果我可以更改关键字 或者添加另一个与退出相同的关键字 那
  • 安卓图像按钮

    如何创建一个没有文本且图像水平居中的按钮 我不想使用图像按钮 因为我想定义不同的背景图像 您只需使用 ImageButton 并将背景设置为您想要的任何内容并将图标设置为 src
  • Tinder 像泛 iOS

    对于 iOS 中的 Tinder 应用程序 我假设他们在图像视图上使用平移手势识别器 为什么用户开始移动的图像下方会显示另一张图像 他们是否有另一个图像视图 并且在手势识别器完成后 动态设置图像视图手势识别器 最后在下面创建另一个图像视图
  • 使用自定义名称创建 Python 动态函数

    如果这个问题已经提出并得到回答 我们深表歉意 我需要做的概念非常简单 但不幸的是我无法在网上找到答案 我需要在运行时使用自定义名称在 Python Python2 7 中创建动态函数 每个函数的主体也需要在运行时构造 但对于所有函数来说 几