Python 是否有重复重新分配变量的简写方法?

Python 是否有重复重新分配变量的简写方法?,python,python-2.7,Python,Python 2.7,举个例子: x = 27 x = sqr(x) x += 2 x = x * 0.1 这可以简单地归结为 x = 0.1 * (sqr(27) + 2) 现在,考虑(X为有序DICT) 有没有一个速记技巧来避免重复变量赋值?例如,是否存在以下功能: def pipeline(x, function_handles): .... for f in function_handles: x.apply(f) #in place return x 或 在操作员模块中

举个例子:

x = 27
x = sqr(x)
x += 2
x = x * 0.1
这可以简单地归结为

x = 0.1 * (sqr(27) + 2)

现在,考虑(X为有序DICT)

有没有一个速记技巧来避免重复变量赋值?例如,是否存在以下功能:

def pipeline(x, function_handles):
    ....
    for f in function_handles:
        x.apply(f) #in place
return x


操作员
模块中有该功能。它的工作原理类似于
itemgetter
,这是您最可能已经看到的:给定名称,
methodcaller
的返回值是调用其参数的命名方法的部分函数

也就是说,考虑到:

x = SomeObjectType()
f = operator.methodcaller('amethod', 'arg1', arg2=100)
f(x)
也就是说:

x = SomeObjectType()
x.amethod('arg1', arg2=100)
您可以将其与简单的
lambda
表达式和/或
partial_方法
一起使用,以构建要应用的函数/方法列表。然后,正如@cricket_007所建议的,您可以使用或编写代码来自动应用它们

另外值得注意的是
functools.reduce
。您可以编写或构造调用方函数,然后使用
reduce
为其提供要调用的函数列表

下面是一些代码,用于根据数据列表减少函数列表(py3,但适用于2.7):


map(func,iterable)
?我能想到的最有用的东西是元组赋值,但我不能保证你能做像
x,x=e,f(x),g(x)
,是
e
表达式,以及
f
g
任意函数之类的事情。你是指
我的命令项()
将在字典段落中替换为
x.items()
?在第二个示例中,您担心的是重复变量赋值吗?不是3个高度重复的听写理解?@cricket\u 007太棒了!
x = SomeObjectType()
f = operator.methodcaller('amethod', 'arg1', arg2=100)
f(x)
x = SomeObjectType()
x.amethod('arg1', arg2=100)
#!python3
import functools
import itertools
import operator

data = [8, 6, 7, 5, 3, 0, 9]

def apply(val, fn):
    print("F=",fn, "val=",val)
    return fn(val)


from functools import reduce

fns = [sorted,
        max,
        str,
    ]

print(reduce(apply, fns, data))