我想问一下如何确定python中对象的类型。我知道如何“正常”,例如,
import types
def f(x):
return x
isinstance(f, types.FunctionType)
返回true。但是,如果我只有一个包含'f'的字符串,请说a ='f'。我该怎么办?我怎么弄清楚,字符串指定的对象是函数还是其他什么?在有人要求之前,它是一个解析器,这就是为什么我不知道'f'是否是一个函数;)
谢谢,
v923z
答案 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'>