有没有一种方法可以在一个对象上使用同一个函数不知道多少次?
例如,如果我想在对象obj
上链接函数fn
两次,我会写成:
fn(fn(obj))
最初的回答:
obj.fn(**kwargs1).fn(**kwargs2)
如果我想要将一个fn
函数链接五次,我会这样做:
最初的回答:
obj.fn(**kwargs1).fn(**kwargs2).fn(**kwargs3).fn(**kwargs4).fn(**kwargs5)
for args in list_of_args:
obj = obj.fn(*args)
string.replace
,如下所示。obj = 'aaaccc'
list_of_args = [['a','b'], ['c','d']]
for args in list_of_args:
obj = obj.replace(*args)
print(obj)
输出结果将为:
bbbddd
这与执行'aaabbb'.replace('a','b').replace('c','d')
相同。
或者我们也可以使用递归方法,它接受对象,一个计数器作为当前要应用的参数的索引,以及函数需要运行的次数。
#fn is either defined, or imported from outside
def chain_func(obj, counter, max_count):
#If counter reaches max no of iterations, return
if counter == max_count:
return obj
#Else recursively apply the function
else:
return chain_func(obj.fn(list_of_args[counter]), counter+1, max_count)
#To call it twice
list_of_args = [kwargs1, kwargs2]
chain_func(obj, 0, 2)
def chain_func(obj, counter, max_count):
#If counter reaches max no of iterations, return
if counter == max_count:
return obj
#Else recursively apply the function
else:
return chain_func(obj.replace(*list_of_args[counter]), counter+1, max_count)
list_of_args = [['a','b'], ['c','d']]
print(chain_func('aaaccc', 0, 2))
输出将会是:
bbbddd
fn
是什么样子的? - Devesh Kumar Singhfn
函数的定义是property(name, value)
,它将一个新属性分配给图中的顶点。当代码行执行时,它会将查询发送到Gremlin服务器,并使用新的属性值更新指定的顶点。(但所有这些都被抽象化了) - Ianfn
调用的参数。 - Ian