>>> import random
>>> isinstance(random.random, types.BuiltinFunctionType)
True
>>> inspect.getsource(random.random)
# returns TypeError
>>> isinstance(random.uniform, types.BuiltinFunctionType)
False
>>> from __future__ import print_function # if using Python 2.*
>>> print(inspect.getsource(random.uniform))
def uniform(self, a, b):
"Get a random number in the range [a, b) or [a, b] depending on rounding."
return a + (b-a) * self.random()
类型模块:
不过,如果你看看引擎盖下面,你会发现它和你现在所做的没什么不同
因此,在您的情况下,使用
试试这个:
这取决于你所说的“内置”是什么意思
使用
__builtins__
如果要检查函数是否是Python解释器中的内置函数之一,可以使用
Python解释器有许多内置常量、函数、类型和异常,它们包含在字典
__builtins__.__dict__
中使用
BuiltinFunctionType
另一方面,如果要检查函数是否为
BuiltinFunctionType
类型,可以使用types
模块使用
inspect
或者
inspect.isbuiltin
(只是isinstance(object, types.BuiltinFunctionType)
周围的一个包装器)注意
BuiltinFunctionType
中的术语“内置”表示“用C编写”。考虑下面的例子:
factorial
函数的类型为BuiltinFunctionType
,但它不是解释器中的内置函数这是因为Python中的
math
模块由围绕C数学库函数的包装器组成能够检测
BuiltinFunctionType
是很有用的,因为对于用Python编写的函数,可以在不打开源文件的情况下检查源代码相关问题 更多 >
编程相关推荐