2017-12-27 2 views
0

if 문을 파이썬으로 작성 중이며 여러 값을 지정해야합니다.파이썬에서 한 줄에 값을 지정할 때 쉼표와 세미콜론의 차이점

스타일을 지정하려면 모든 과제를 한 줄로 작성해야합니다. 그래서 저는 그들을 쉼표로 구분하려고했습니다. 나는 그것이 작동 세미콜론을 사용할 때, 그러나

SyntaxError: can't assign to literal

:

if True: 
    a=0.5, b=0.5 
    print(a), print(b) 

에 구문 오류가있을 것입니다.

if True: 
    a=0.5; b=0.5 
    print(a), print(b) 

쉼표는 print에서 작동하지만 할당되지 않은 이유는 무엇입니까?

+1

'a, b = 0.5, 0.5'로'a = 0.5, b = 0.5 '를 변경하십시오. '; '에 관해서는 문장의 끝을 표시한다. 그래서'a = 0.5; '는'b = 0.5'와는 다른 문장입니다. – Abdou

답변

1

파이썬의 쉼표는 함수 인수 및 튜플 및 목록 만들기와 같은 항목에 사용됩니다. 이

>>> print(a), print(b) 
0.5 
0.5 
(None, None) 

(None, None)을 실행할 때 명령 줄 출력을 통지하는 경우 두 개의 잉크 문의 출력 값으로 만든 결과 튜플은 쉼표로 함께 넣어이다. None, None(None, None)과 같습니다.

인쇄 된 0.5 값은 부작용print 문입니다. 인쇄 할 때 화면에 표시되는 것이지만 실제로 인쇄물의 반환 값은 None입니다.

또한 콤마 있기 때문에 등호는 다음의 두 값을 모두 할당

>>> a=0.5, 0.6 
>>> print(a) 
(0.5, 0.6) 

a의 효과를 알. 그리고 지금 우리는 솔루션에 가까워지고,이 두 문장은 동일하다 :

a=0.5, b=0.5 
a = (0.5, b) = 0.5 

그래서 파이썬은 이전 문장의 값으로하는 것이 할 수없는 마지막 0.5를 할당하려고 시도합니다. 기본적으로 문법 오류를주는 문자 할당을 수행 :

>>> (0.6, 0.7) = 0.5 
SyntaxError: can't assign to literal 
2

간단히 말해서, 파이썬의 쉼표는 튜플을 언팩하는 데 사용됩니다. print 함수에서 쉼표를 사용하면 실제로 두 개의 tuples이 사용됩니다. 세미콜론은 JS 나 C++과 같은 언어로 사용되기 때문에 구분 기호로 사용되며 개행과 동일합니다. 리터럴은 본질적으로 변수의 반대입니다. 상수 또는 고정 값

한 줄에 두 개의 과제를 원할 경우 할 수있는 일은 다음과 같습니다. a, b = 0.5, 0.5

그러나 귀하의 경우에는 변수를 할당 할 수 있습니다. a = b = 0.5

관련 문제