我正在尝试在Python中使用Javascript等效项:
a.new_func = function(arg1, arg2) {
var diff = arg1 - arg2;
return diff * diff;
}
Run Code Online (Sandbox Code Playgroud)
现在,我这样做的方法是首先定义方法,然后分配它,但我的问题是Python是否允许速记在同一行中进行赋值和定义部分.像这样的东西:
a.new_func = def new_func(arg1, arg2):
diff = arg1 - arg2
return diff * diff
Run Code Online (Sandbox Code Playgroud)
而不是这个:
def new_func(arg1, arg2):
diff = arg1 - arg2
return diff * diff
a.new_func = new_func
Run Code Online (Sandbox Code Playgroud)
我意识到差异不大,但我仍然有兴趣知道它是否可能.
Python不支持这样的语法.
我想如果你想,你可以写一个装饰师.它可能看起来更好一些:
def method_of(instance):
def method_adder(function):
setattr(instance, function.__name__, function)
return function
return method_adder
@method_of(a)
def new_func(arg1, arg2):
stuff()
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望该方法可以访问self:
def method_of(instance):
def method_adder(function):
setattr(instance, function.__name__, function.__get__(instance))
return function
return method_adder
@method_of(a)
def new_func(self, arg1, arg2):
stuff()
Run Code Online (Sandbox Code Playgroud)
与您正在寻找的最接近的是lambda表达式,它不像正确编写的函数那样易于使用:
a.new_function = lambda arg1,arg2 : (arg1-arg2)**2
Run Code Online (Sandbox Code Playgroud)
但是,在几乎所有情况下,定义一个函数并分配它,您在示例中的方式就是要走的路
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |