python获取函数中参数的变量名[重复]

2024-01-23

我想做这样的事情:

fib = 1
foo = (arg):
    print arg, argName # the name of the variable that was put in for arg
foo(fib)

并得到这个返回:

1, fib

你不能那样做(正如 Ignacio Vazquez-Abrams 已经回答的那样),但你可以用类似的方式做到这一点:

>>> def foo(**kwargs):
    for arg_name in kwargs:
        return kwargs[arg_name], arg_name


>>> foo(fib=1)
(1, 'fib')

唯一的区别是您必须使用关键字参数,否则它将不起作用。

另一种解决方案也是访问__name__传递变量的属性,这将导致获取函数的名称、类或名称(或定义此名称的任何其他内容)。您应该注意的唯一一件事是,默认情况下这不是变量的名称,而是函数/类/模块的原始名称(定义时分配的名称)。请参阅此处的示例:http://ideone.com/MzHNND http://ideone.com/MzHNND

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

python获取函数中参数的变量名[重复] 的相关文章

随机推荐

  • Javascript:“取消”动态脚本标签?

    我使用动态脚本标签从外部域请求 javascript 有时请求花费的时间太长 如果请求时间太长 是否可以停止请求或超时 我不想使用 xmlhttprequest 因为我想避免使用服务器端代理 Thanks 话虽如此 动态添加脚本有多种方法
  • x/2 和 x>>1 或 x*2 和 x << 1 之间的差异,其中 x 是整数

    正如我们所知 计算整数 x 2 我们只需编写y x 2 对于 x 2 也类似 但优秀的程序员会使用位操作来计算这个值 他们只是做y x gt gt 1 这两种方法有什么区别吗 我所说的差异是指所需时间 空间 内存的差异 或者两者完全相同 即
  • 如何获取select2:unselect的值

    我怎样才能获得未选择选项的值Select2 https select2 github io using select2 unselect mySelect on select2 unselect function e var unselec
  • 重命名android中的包名称

    我想在我的项目中重命名包名称 到目前为止我有 9 个包 当我更改包名称时 更改是在 java 和 xml 文件中完成的 但在Manifest xml文件中 活动定义部分 包活动在重命名包后不会改变 请帮我 Android Tools 中有一
  • Camel - 流缓存不缓存/无法转换?

    读完一遍之后 我似乎失去了 内在 的身体 请注意 我使用的是 Camel 的流缓存 并且输入是来自 http 组件的 json 文件 我有一个带有以下代码的处理器 log debug Body Type exchange getIn get
  • 使用 jsonp 来自 Jquery 的 REST WCF url 中的 javascript 错误

    当我尝试从 jsonp 执行 REST WCF 服务时 出现 javascript 错误 网页错误详细信息 User Agent Mozilla 4 0 compatible MSIE 8 0 Windows NT 6 1 WOW64 Tr
  • 如何在Android RxJava中使用flatMap在不使用lambda函数的情况下顺序调用三个Web服务?

    我的 API 客户端 public class ApiClient public static final String BASE URL http baseurl com wp json private static Retrofit r
  • 生成 test-jar 以及测试包中的 jar 文件

    我想将我的测试包打包成jar文件 如何从maven插件Surefire执行生成test jar 通过使用以下配置 您可以从测试中创建一个 jar
  • 相当于 Python 2 中 BytesIO 的 getbuffer

    在Python 3中 我可以通过以下方式获取ByteIO对象的大小object getbuffer nbytes where object ByteIO 但是什么是最好的等价物getbuffer 在 Python 2 中 做了一些探索 我发
  • Bash 中对除数进行四舍五入

    我如何舍入两个除数的结果 例如 3 2 就像我做的时候一样 testOne 3 2 testOne 包含 1 而它应该四舍五入为 2 作为 3 2 1 5 的答案 要在截断算术中进行舍入 只需添加 denom 1 到分子 示例 向下舍入 N
  • 使用用户定义或 python 命令序列的 C++ 线程不会在 gdb 异步模式下停止

    我在嵌入式 powerpc 目标上使用 gdb 7 4 1 对使用 pthread 的多线程 C 程序执行一些分析 我的最终目标是使用 python 编写 gdb 脚本来自动化一些常见的分析功能 问题是 当我单独运行命令与在 gdb 用户定
  • 通过 jQuery 检测对特定 HTML 5 功能的支持

    我正在编写一些 HTML5 演示代码 包括类似的内容
  • python 中的 Chrome 扩展?

    我想创建一个 google chrome 扩展 具体来说 我想制作一个打包应用程序 但不是托管应用程序 我认为这将我限制在 JavaScript 和 HTML CSS 方面是否正确 我的问题是我需要做一些复杂的数学 奇异值分解 因子分析 并
  • 如何在 OMNeT++ 仿真过程中更改网络配置?

    我想修改element的一些参数 iniOMNeT 中的文件 例如模拟运行期间节点的传输速率 例如当节点收到一些控制消息时 我发现信息表明可以以某种方式循环配置 如下所示 一些变量 几个值 但是里面没有条件子句 ini文件 并且无法将来自
  • 反应本机滚动视图-scrollToEnd-在Android上

    我正在尝试调用一个将在 onFocus on 上触发的函数TextInput这将使scrollView一直向下滚动 使用scrollToEnd 所以这是我的班级组件 class MyCMP extends Component constru
  • python维护两个不同的随机实例

    我正在尝试进行一些分析 出于 原因 我希望程序中的每个对象都有自己的种子 但没有全局种子 我能完成这样的事情吗 a random seed seed1 b random seed seed1 for a in range 5 print a
  • 在 C++ 中使用 getline() 进行文件输入

    我正在尝试用 C 完成一个简单的初学者任务 我有一个包含该行的文本文件 约翰 史密斯 31 就是这样 我想使用 ifstream 变量读取此数据 但我想将名称 John Smith 读入一个字符串变量 然后将数字 31 读入一个单独的 in
  • HTML5 Canvas 改变图像颜色

    我正在使用 jquery 滑块通过着色将图像颜色从蓝色更改为红色 范围为 100 到 100 这意味着当滑块值为 0 时 图像应看起来正常 默认值 并根据滑块值从蓝色 100 到 100 变化 在我的本地 我可以将图像加载到画布中 由于某种
  • 如何在 Python 中将整个列表作为命令行参数传递?

    我试图将两个包含整数的列表作为参数传递给 python 代码 但sys argv i 获取字符串列表形式的参数 输入看起来像 python filename py 2 3 4 5 1 2 3 4 我发现了以下 hack 来转换列表 strA
  • python获取函数中参数的变量名[重复]

    这个问题在这里已经有答案了 我想做这样的事情 fib 1 foo arg print arg argName the name of the variable that was put in for arg foo fib 并得到这个返回