如何使用字符串按名称动态调用Python函数?

2024-03-06

我有一个 Python 函数调用,如下所示:

import torchvision

model = torchvision.models.resnet18(pretrained=configs.use_trained_models)

效果很好。

如果我尝试使其动态化:

import torchvision

model_name = 'resnet18'
model = torchvision.models[model_name](pretrained=configs.use_trained_models)

然后它失败:

TypeError: 'module' object is not subscriptable

这是有道理的,因为model是一个导出很多东西的模块,包括 resnet 函数:

# __init__.py for the "models" module

...
from .resnet import * 
...

如何在不提前知道其名称的情况下动态调用该函数(除了获得带有函数名称的字符串)?


您可以使用getattr https://docs.python.org/3/library/functions.html#getattr功能:

import torchvision

model_name = 'resnet18'
model = getattr(torchvision.models, model_name)(pretrained=configs.use_trained_models)

这本质上与点符号相同,只是以函数形式接受字符串来检索属性/方法。

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

如何使用字符串按名称动态调用Python函数? 的相关文章

随机推荐

  • 使用 Simplepie 时出现弃用错误

    我已经安装了最新的 Simplepie 代码 1 2 1 并且我正在使用他们提供的演示代码
  • 有没有办法在另一种形式上显示一种形式的一部分?

    我有一个表格 我想做的就是在另一个表单上显示该表单的一部分 我不希望它发挥作用或任何东西 我基本上只是希望它是一张图片 这可能吗 如果可能的话 如何实现 Like display new display form new rectangle
  • 具有动态形状的变量 TensorFlow

    我需要在 TensorFlow 中创建一个矩阵来存储一些值 诀窍是矩阵必须支持动态形状 我正在尝试做与 numpy 中相同的事情 myVar tf Variable tf zeros x y validate shape False whe
  • python 中的“in”和“not in”语句如何工作

    我主要学习 C 语言 并花了很多时间了解其底层实现 但我最近开始学习Python 所以这里有很多与C不同的怪癖 python 中的 in 语句如何工作 if x in array the usage of an in statement p
  • 在 C 编程中将用户输入写入文件

    我正在开发一个程序 将用户输入写入文件 然后搜索文件中的特定记录并将其输出到屏幕 我尝试使用 fgets 和 fputs 但没有成功 这是我到目前为止所拥有的 include
  • codeIgniter 分页 - 不会转到搜索结果的下一个链接

    我正在对搜索结果使用分页 搜索工作完美 搜索后显示前 10 条记录 但是 当我单击 下一步 按钮时 所有内容都会消失并显示一个空白页面 任何我的代码中可能有问题的想法将不胜感激 Model function search bookings
  • ZedGraph (.NET) - 仅具有实际值的轴标签

    使用ZedGraph http zedgraph org控制 假设我正在绘制 Y 值为 13 34 和 55 的数据 如何设置 Y 轴 以便仅显示 13 34 和 55 的文本标签 我猜网格线将同步 我不希望在数据范围内有规则间隔的标签 例
  • 使用嵌套 Parallel.For

    考虑这个例子 var x 0 for var i 0 i lt 100 i for var a i 1 a lt 100 a x 1 当打印 x 我们always得到 4950 如果我想并行化这个怎么办 这就是我想出的 Parallel F
  • 泛型数组不接受空数组作为输入

    import Foundation func insertionSort
  • 在 ember.js 中实现“有条件”后退按钮

    我正在开发一个基于 ember js 版本 1 2 的移动应用程序 我试图找到最惯用的方法来实现许多移动应用程序中常见的全局菜单切换 后退按钮模式 具体来说 它是一个位于固定顶部工具栏左侧的按钮 当用户位于应用程序的主页 索引视图时 该按钮
  • 实体框架上下文中的复杂类型是什么

    现在我正在从 Pluralsight 上的视频中学习很多有关实体框架的知识 所以请原谅我的问题 它可能看起来很新 但我无法理解复杂类型是什么或为什么我需要它们 我确实知道我必须通过注释或 Fluent Api 来映射它们 如下所示 mode
  • .Net Core、便携式、标准、紧凑、UWP 和 PCL 之间的区别?

    我听说过 Net核心 Net 便携式 Net标准 Net 紧凑型 通用Windows平台 便携式类库 所有这些都向我解释为 完整 Net 的子集 允许您针对多个平台 所以我的问题是 有什么不同 如果我想编写一个可供尽可能多的受众使用的库 哪
  • 如何在 Windows 中将文件上传到 Solr?

    我需要验证文本提取在 Windows Server 2003 上安装的 Solr 上是否正常工作 我找到的将文件上传到 Solr 的所有示例都使用如下的curl curl http localhost 8983 solr update ex
  • 检查点是否位于自定义网格几何体内部

    检查点是否位于自定义 不规则 网格几何图形内部的最简单方法是什么 如果你的网格是特写的 您可以使用 THREE js 内置光线投射器 示例代码如下 const point new THREE Vector3 2 2 2 Your point
  • 在 iPhone 上合并音频文件

    我想将 caf 文件和 mp3 文件合并为 iPhone 上的 mp3 文件 或者我可以将它们转换为 aac 然后合并它们 我该怎么做 就像Kala OK一样 我想将我的声音和音乐融合在一起 您需要将两个文件解码为 LPCM 普通旧整数 将
  • PHP 脚本抓取整行

    感谢您花时间阅读本文 无论内容的质量如何 我都会感激每一个回复 我正在尝试创建一个在文本文件中搜索特定文本的 php 脚本 用户在 HTML 表单中输入特定文本 PHP 脚本应在文本文件中搜索该特定文本 HTML表单的输入字段的值为 use
  • 解析从云代码向特定用户发送推送通知

    我想从解析云代码向特定用户发送推送通知 因此 我在解析表的安装类中创建了一个用户部分 并将用户对象 ID 保存在那里 以便我可以通过 ID 定位用户并从云代码发送推送 https www dropbox com s dvedyza4bz3z
  • last-of-type 不适用于 IE11 和 Edge 中的自定义元素

    foo bar last of type background color red div class foo div
  • 使用 NHibernate 持久保存 Blob 流

    如果我有一个类声明为 public class MyPersistentClass public int ID get set public Stream MyData get set 如何使用 NHibernate 的映射将 MyData
  • 如何使用字符串按名称动态调用Python函数?

    我有一个 Python 函数调用 如下所示 import torchvision model torchvision models resnet18 pretrained configs use trained models 效果很好 如果