检查变量是否是Python中的标准类型函数

时间:2016-10-14 21:24:36

标签: python

我正在寻找一种方法来捕获Python中的所有std类型函数(int,str,xrange等)。

基本上任何具有<type X>而不是<class X>的repr的东西。这是Python 2中所有std类型的完整列表: https://docs.python.org/2/library/stdtypes.html

如果我使用isinstance(X, type)type(X) == type,它也会捕获所有类,但我只想检测类型函数(或任何分配给其中一个的名称(即my_int = int) )。

我想到的唯一想法是检查X.__name__是否在__builtins__中,但我不确定这是否是一个干净或正确的解决方案。

2 个答案:

答案 0 :(得分:0)

你的建议对我来说似乎很好。

builtin = dir(__builtins__)
def is_builtin(tested_object):
    return tested_object.__class__.__name__ in builtin

但请记住,内置类型可能会黯然失色。

Rob发表评论后更新:

def is_builtin(tested_object):
    return tested_object.__class__.__module__ == '__builtin__'

答案 1 :(得分:0)

要检查变量是类还是内置类型,请使用inspect模块。

i := 2
awkPart := fmt.Sprintf("awk '{print $%d/1024}'", i)
out, err := exec.Command("bash", "-c", "tail -n 1 /var/log/apache2/access.log | "+awkPart+" | tee -a mem_usage.csv").Output()

或者,尝试type()。适用于Python 2.75和3。

Markup.keyboard([

 [{text:context.i18n.t('buttons.nearestEventsNow'),request_location:true}],
   [context.i18n.t('buttons.timeAndLocation')],]).resize().extra()

我不明白“标准类型函数”的含义,我认为它们可能只是类型。