2

假设我在我的 Python 文件中经常使用这个代码块

if x == 1:
  x += 1
else:
  x -= 1

有没有办法“复制”这段代码,这样我就不必在整个文件中重复输入这四行?

4

4 回答 4

4

是的,为它定义一个函数:

def flip_member(x):
    if x == 1:
        x += 1
    else:
        x -= 1
    return x

然后,您可以从代码中的任何位置调用该函数,而不是重写相同的逻辑。

于 2012-11-05T06:14:56.267 回答
1

正如其他答案中所建议的,您可以编写 x 的函数并将 x 设置为等于函数的结果。

一些替代方法是以更简单的形式编写表达式:

x = x+1 if x==1 else x-1

上面计算的 x 的新值与问题中的四行代码相同。但是如果你只是想在值 1 和 2 之间来回切换 x,请注意 3-1 是 2,而 3-2 是 1,所以你可以说——在 1 和 2 之间切换——</p>

x = 3-x 
于 2012-11-05T06:26:53.413 回答
0
def manipulate(x):
    return x+1 if x==1 else x-1

myVal = 10
myVal = manipulate(myVal)
print myVal
>>> 9

或者:

manipulate = lambda x: x+1 if x==1 else x-1
myVal = manipulate(myVal)
print myVal
>>> 9
于 2012-11-05T06:19:55.750 回答
0

或者更短的单行:

x = x - 1 + (x==1) * 2
于 2012-11-05T06:54:39.937 回答