我正在尝试用Python实现Javascript的等效功能:
a.new_func = function(arg1, arg2) {
var diff = arg1 - arg2;
return diff * diff;
}
现在,我做这件事的方式是先定义方法,然后赋值,但我的问题是Python是否允许速记在同一行中完成赋值和定义部分。像这样:
a.new_func = def new_func(arg1, arg2):
diff = arg1 - arg2
return diff * diff
而不是这样:
def new_func(arg1, arg2):
diff = arg1 - arg2
return diff * diff
a.new_func = new_func
我意识到区别并不大,但我仍然有兴趣知道这是否可能。你知道吗
Python不支持这种语法。你知道吗
我想如果你愿意,你可以写一个装饰师。它可能看起来更好一点:
或者,如果希望该方法能够访问
self
:您应该注意到实例方法不是lambda。你知道吗
例如,让我们在IPython中做一个简单的实验
试图将属性绑定到
lambda
会在调用它时失败。你知道吗相反,您应该做的是用
types.MethodType
包装lambda在
descriptors
背后发生了一些奇怪的魔法。在我看来,这不是一个很好的解决方案,但是。。。如果你想了解更多,这里有一个链接http://www.cafepy.com/article/python_attributes_and_methods/python_attributes_and_methods.html最接近您要查找的是lambda表达式,它不像正确编写的函数那样易于使用:
然而,在几乎所有的情况下,定义一个函数,并分配它,你在你的例子中所做的方式是正确的
相关问题 更多 >
编程相关推荐