我想要一个可以像这样返回变量/对象名称的函数:
def get_variable_name (input_variable):
## some codes
>>get_variable_name(a)
'a'
>>get_variable_name(mylist)
'mylist'
Run Code Online (Sandbox Code Playgroud)
它看起来很傻但我需要函数来构造关于变量的表达式,以便稍后在'exec()'上.有人可以帮忙写一下'get_variable_name'吗?
我现在已经多次在SO上看过这类问题的一些变种.答案是不. 学习在dict需要名称和对象之间的关联时使用. 你以后会感谢自己.
在回答"我的代码如何发现对象的名称?"这一问题时,这里引用了Fredrik Lundh(在comp.lang.python上):
就像你得到你在门廊上找到的那只猫的名字一样:猫(物体)本身不能告诉你它的名字,而且它并不真正关心 - 所以找出它叫什么的唯一方法就是问所有邻居(名称空间)如果是他们的猫(对象)......
......如果你发现它被许多名字所知,或者根本没有名字,也不要感到惊讶!
注意:技术上可以获得绑定到对象的名称列表,至少在CPython实现中是这样.如果您有兴趣看到演示,请参阅inspect我的答案中显示的模块的用法:
这种技术只应该在一些疯狂的调试会话中使用,不要在你的设计中使用这样的东西.
一般来说,这是不可能的.将某些内容传递给函数时,您传递的是对象,而不是名称.同一个对象可以有许多名称或没有名称.如果打电话,该怎么办get_variable_name(37)?您应该考虑为什么要这样做,并尝试找到另一种方法来完成您的实际任务.
编辑:如果你想get_variable_name(37)返回37,那么如果你这样做a=37,那么它get_variable_name(a)也将返回37.一旦进入函数,它就无法知道对象的"名字"在外面是什么.
| 归档时间: |
|
| 查看次数: |
3280 次 |
| 最近记录: |