正如动态类可以使用类型(名称,基类,命名空间字典)创建,可以创建一个动态函数?在Python中可以使用真正的动态和匿名函数吗?
我试着做线沿线的东西:
>>> f = type("f", (function,), {})
NameError: name 'function' is not defined
好了,我会很聪明,但:
>>> def fn():
... pass
...
>>> type(fn)
<type 'function'>
>>> f = type("f", (type(fn),), {})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: type 'function' is not an acceptable base type
不Python的专门防止动态创建函数的功能与它允许动态类相同吗?
编辑:请注意,我不允许任何使用exec ..因为我的问题是Python语言本身是否允许这样做。
在此先感谢。
不同您可以lambda函数:'FOO =λx:x * 2'。你可以让任何类可以调用,所以... – 2012-04-24 17:55:28
但我不认为Python中的lambda等价于lambda作为匿名函数的经典概念,对吧? python中的lambda远远更有限,因为它基本上只能处理单个表达式,对吗? – 2012-04-24 17:58:27
但由于列表理解是一个单一的表达式......你可以循环,分配,有副作用,控制流,嵌套这些... – ch3ka 2012-04-24 18:00:40