2015-01-17 7 views
4

나는이 동일한 일을하려고 할 때 나는, 그러나한 줄에 여러 변수에 + =를 사용할 수 있습니까?

##For example- going from- 
Var1 =15 
Var2 = 26 
Var3 = 922 

##To- 
Var1, Var2, Var3 = 15, 26, 922 

라인 - 하나에 몇 가지 변수 선언을 절단 한 내 코드를 단축하는 동안이 오류가 발생합니다

User_Input += Master_Key[Input_ref] 
Key += Master_Key[Key_ref] 
Key2 += Master_Key[Key_2_Ref] 

##Which looks like- 
User_Input, Key, Key2 += Master_Key[Input_Ref], Master_Key[Key_Ref], Master_Key[Key_2_Ref] 

코드 -

SyntaxError: illegal expression for augmented assignment 

나는 relevant Python documentation을 읽었지만이 특정 코드를 줄이는 방법을 찾을 수 없습니다.

+7

왜 단축해야합니까? 원래 형식으로는 더 간단하고 읽기 쉽습니다. – Holloway

+0

그럴 필요는 없습니다. 단지 더 간단한 방법이 있는지 알아 내려고했습니다. 각 라인이 기본적으로 문자열에 문자를 추가 할 때. 프로그램의이 비트는 암호화 프로그램 테스트를위한 임의의 입력, 키 및 다른 키를 생성합니다. 이것은 for 루프를 사용하여 임의의 숫자를 선택하고이를 문자열에 대해 참조합니다. –

+0

가 Random_Test_Algorithm (Input_Length, Repeat_times) 데프 '범위 내가 대한 을 (Repeat_times) USER_INPUT, 키 1, 키 2 = "", "", "" 위한 전 범위 (Input_Length) Input_ref, Key_ref, Key_2_Ref = random.randint (0, (len (Master_Key) -1)) random_randint (0, (len (Master_Key) -1)),User_Input + = Master_Key [Input_ref] Key + Master_Key [Key_ref] Key2 + Master_Key [Key_2_Ref] ' –

답변

9

아니요, 불가능합니다. 추가 대상을 여러 대상과 함께 사용할 수 없습니다.

당신은 당신이 연결된 Augmented assignment statements section에서 볼 수 있습니다

augmented_assignment_stmt ::= augtarget augop (expression_list | yield_expression) 
augtarget     ::= identifier | attributeref | subscription | slicing 

augtarget 규칙 만 하나의 대상 수 있습니다. Assignment statements rules와 비교해 : 당신이에 할당 할 target_list 규칙이

assignment_stmt ::= (target_list "=")+ (expression_list | yield_expression) 
target_list  ::= target ("," target)* [","] 
target   ::= identifier 
        | "(" target_list ")" 
        | "[" target_list "]" 
        | attributeref 
        | subscription 
        | slicing 

합니다.

나는 이것을 시도하거나 줄이지 않을 것이다. 증분 된 과제를 한 줄에 집어 넣으려고하면 이 아닌은 무슨 일이 일어나는지에 대한 가독성이나 이해력을 향상시킵니다.

+0

감사합니다. 개인적인 프로젝트 였기 때문에 가독성을 고려하지 않았습니다. 그러나 나는 실제로 더 효율적인 무엇이 질문을 가지고 있습니까? a, b, c = 1, 2, 3이 실제로 더 빨리 실행됩니까? –

+1

@ TheoPearson-Bray : 차이점은 신경 쓰지 않아도되지만, 3 요소를 사용하는 튜플 할당은 직접 할당보다 * 2 * 많은 바이트 코드를 실행합니다. [어떻게 파이썬 튜플 (a, b) = (b, a)의 내부에서 작업을 교환합니까?] (http://stackoverflow.com/a/21047622)를 참조하십시오. 그러나 그 작은 차이를 최적화하지 마십시오. –