检查python中字符串给出的对象类型

时间:2011-10-19 18:25:08

标签: python object types

我想问一下如何确定python中对象的类型。我知道如何“正常”,例如,

import types

def f(x):
    return x

isinstance(f, types.FunctionType)

返回true。但是,如果我只有一个包含'f'的字符串,请说a ='f'。我该怎么办?我怎么弄清楚,字符串指定的对象是函数还是其他什么?在有人要求之前,它是一个解析器,这就是为什么我不知道'f'是否是一个函数;)

谢谢,

v923z

3 个答案:

答案 0 :(得分:0)

您可以在globals()(全局符号表和locals()(本地符号表)中查找名称:

Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def f(x):
...     return x
... 
>>> globals()['f']
<function f at 0x1004c0230>
>>> import types
>>> isinstance(globals()['f'], types.FunctionType)
True
>>> 

答案 1 :(得分:0)

要知道它的类型,你可以从字符串到它的真实表示来评估它:

def f(x):
    return x

a = "f"
aEvaluated = eval(a)
print(type(aEvaluated))
isinstance(aEvaluated, types.FunctionType)

答案 2 :(得分:0)

如果“f”指的是本地环境中的变量,则可以使用 globals()来查找它:

>>> def f(x):
        return x

>>> a = 'f'
>>> type(globals()[a])
<type 'function'>