2012-11-05 2 views
2

가정하자 나는이 네 가지를 입력 할 필요가 없도록재사용 특정 라인

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

가 "복사"이 코드 수있는 방법이 있나요 내 파이썬 파일에서 매우 자주 코드 블록을 사용 파일 전체에 반복적으로 행이 있습니까?

+1

기능이라고하는 것을 들어 보셨습니까? :) – Curious

+1

초보자로서의 +1은 초보자가되어야합니다. ;) – pepr

답변

4

예 그것을 위해 자신 함수를 정의 :

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

그런 다음 같은 논리를 다시 작성하는 대신 코드에서 어디에서 함수를 호출 할 수 있습니다.

+0

이것은 유효한 Python 코드가 아닙니다. – del

+0

그래, 때로는 혼란스러워. 수정 됨. –

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

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

OR : 다른 답변에서 제안한 것처럼

manipulate = lambda x: x+1 if x==1 else x-1 
myVal = manipulate(myVal) 
print myVal 
>>> 9 
1

, 당신은 X의 함수를 작성하고 설정할 수는 함수의 결과와 동일 X.

어떤 대안이 단순한 형태로 표현을 쓰고있다 :

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

위의 질문에서 코드의 네 개의 선으로 X 같은 새 값을 계산합니다. 하지만 값 1과 2 사이에서 x를 앞뒤로 전환하려면 3-1은 2이고 3-2는 1이므로 1과 2 사이를 전환하려면 -라고 말하면됩니다.

x = 3-x 
0

또는 더 짧은 한 라이너 :

x = x - 1 + (x==1) * 2