';类型';函数的定义,在Python中?

';类型';函数的定义,在Python中?,python,types,Python,Types,什么Python内置返回 >类型(lambda:None) 有没有办法避免创建这个lambda函数,以获得一般的函数类型 有关更多详细信息,请参阅 谢谢 Chris.内置不是函数,而是:内置的函数或方法。这不是命名的全部意义吗 您可以通过以下方式获得: >>> type(len) <class 'builtin_function_or_method'> >类型(len) 您应该能够使用类型。FunctionType执行您想要的操作: Python 2.6.1 (

什么Python内置返回

>类型(lambda:None)
有没有办法避免创建这个lambda函数,以获得一般的函数类型

有关更多详细信息,请参阅

谢谢


Chris.

内置不是
函数,而是:
内置的函数或方法。这不是命名的全部意义吗

您可以通过以下方式获得:

>>> type(len)
<class 'builtin_function_or_method'>
>类型(len)

您应该能够使用
类型。FunctionType
执行您想要的操作:

Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import types >>> help(types.FunctionType) Help on class function in module __builtin__: class function(object) | function(code, globals[, name[, argdefs[, closure]]]) | | Create a function object from a code object and a dictionary. | The optional name string overrides the name from the code object. | The optional argdefs tuple specifies the default argument values. | The optional closure tuple supplies the bindings for free variables. Python 2.6.1(r261:675152009年7月7日23:51:51) [GCC 4.2.1(苹果公司构建5646)]关于达尔文 有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。 >>>导入类型 >>>帮助(类型.函数类型) 关于模块中类函数的帮助\uuuu内置\uuuuu: 类函数(对象) |函数(代码、全局变量[、名称[、argdefs[、闭包]]) | |从代码对象和字典创建函数对象。 |可选名称字符串覆盖代码对象中的名称。 |可选的argdefs元组指定默认参数值。 |可选的闭包元组为自由变量提供绑定。 但是一般来说,
def
被认为是
函数类型的默认构造函数。

“Python内置返回什么
?”

功能

“是否有办法避免创建此lambda函数,以获得函数的一般类型?”

是的,类型。函数类型。 或仅键入(anyfunction)

若你们问如何去掉lambda(但重读后告诉我你们可能并没有),你们可以定义一个函数来代替lambda

因此,不是:

>>> somemethod(lambda x: x+x)
是吗

>>> def thefunction(x):
...     return x+x
>>> somemethod(thefunction)

您应该摆脱Python中“类型”的概念。大多数时候,你不想检查某物的“类型”。显式检查类型很容易损坏,例如:

>>> s1 = 'hello'
>>> s2 = u'hello'
>>> type(s1) == type(s2)
False
您要做的是检查对象是否支持您试图对其执行的任何操作

如果要查看给定对象是否为函数,请执行以下操作:

>>> func = lambda x: x*2
>>> something_else = 'not callable'
>>> callable(func)
True
>>> callable(something_else)
False

或者尝试调用它,并捕获异常

为什么您需要知道函数的类型?本着duck类型的精神,您还可以在Python<3.0中使用
hasattr(func,“func-code”)
,或者在Python>=3.0中使用
hasattr(func,“\u-code”)
。但是,
函数
类非常特殊,我认为按类型检查它是有意义的。另外,请注意,
函数
类型和可调用项之间有区别,因为任何类的实例都可以调用。我无法确切理解OP的代码试图做什么来理解一个callable是否足以满足他的目的。我刚刚从您那里学到了callable()我肯定会越来越多地使用这个。谢谢这是我一直在寻找的“类型.函数类型”的答案。谢谢你的信息。
>>> func = lambda x: x*2
>>> something_else = 'not callable'
>>> callable(func)
True
>>> callable(something_else)
False