[python] 파이썬에서 표현식과 문장의 차이점은 무엇입니까?

파이썬에서 표현과 문장의 차이점은 무엇입니까?



답변

표현식 에는 식별자 , 리터럴연산자 만 포함 됩니다 . 연산자에는 산술 및 부울 연산자, 함수 호출 연산자 () 에는 구독 연산자 [] 등이 포함되어 있으며 어떤 종류의 “값”(모든 Python 객체 일 수 있음)으로 줄일 수 있습니다. 예 :

3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7

성명서 (참조 1 ,반면에 2 )는 한 줄 (또는 여러 줄)의 파이썬 코드를 구성 할 수있는 모든 것입니다. 표현식도 문장입니다. 예 :

# all the above expressions
print 42
if x: do_y()
return
a = 7


답변

표현 -로부터 뉴 옥스퍼드 아메리칸 사전 :

표현 : 수학 양을 함께 표현하는 기호 모음 : 원의 둘레 표현은 2πr입니다.

총체적인 용어로 표현하면 하나 이상의 값이 생성됩니다.

파이썬에서, 표현식은 파이썬 언어 레퍼런스 에서 광범위하게 다루어집니다 . 일반적으로, 파이썬에서의 표현식은 문법적으로 합법적으로 Atom , PrimariesOperators 조합으로 구성 됩니다.

위키 백과의 파이썬 표현

표현의 예 :

연산자내장 함수 또는 사용자 작성 함수 호출과의 리터럴 및 구문 상 올바른 조합 :

>>> 23
23
>>> 23l
23L
>>> range(4)
[0, 1, 2, 3] 
>>> 2L*bin(2)
'0b100b10'
>>> def func(a):      # Statement, just part of the example...
...    return a*a     # Statement...
... 
>>> func(3)*4
36    
>>> func(5) is func(a=5)
True

Wikipedia의 진술 :

컴퓨터 프로그래밍에서 문장은 명령형 프로그래밍 언어의 가장 작은 독립형 요소로 생각할 수 있습니다. 프로그램은 하나 이상의 명령문으로 구성됩니다. 명령문에는 내부 구성 요소 (예 : 표현식)가 있습니다.

Wikipedia의 파이썬 문장

총체적인 용어로 : 진술은 무언가를 하고 종종 표현 (또는 다른 진술)으로 구성됩니다

파이썬 언어 레퍼런스는 간단한 문장복합 문장을 광범위하게 다루고 있습니다.

“표현은 무언가를한다”와 “표현은 가치를 만들어 낸다”는 구별은 모호해질 수있다.

  • List Comprehension 은 “Expression”으로 간주되지만 루핑 구조가 있으므로 무언가를 수행합니다.
  • if일반적으로 같은 문장이다 if x<0: x=0그러나 당신은 또한 수 있습니다 조건식 같은 x=0 if x<0 else 1표현식이 있습니다. C와 같은 다른 언어에서는이 형식을 이와 같은 연산자라고합니다.x=x<0?0:1;
  • 함수를 작성하여 자신 만의 식을 작성할 수 있습니다. def func(a): return a*a사용시 표현식이지만 정의시 명령문으로 구성됩니다.
  • 반환하는 표현식 None은 Python의 프로 시저입니다. def proc(): pass문법적 proc()으로, 표현식으로 사용할 수 있지만 아마도 버그 일 것입니다.
  • 파이썬은 C가 Expression과 Statement의 차이점에 있다고 말하는 것보다 조금 더 엄격합니다. C에서 모든 표현은 법적 진술입니다. 당신 func(x=2);은 그 표현이나 진술인가? ( 답변 : 부작용이있는 명령문으로 사용되는 표현식 ) 파이썬에서 x=2함수 호출 내부의 할당 문은 호출시 에만 func(x=2)명명 된 인수 a를 2로 설정 func하고 C 예제보다 제한됩니다.

답변

이것은 파이썬과 관련이 없지만 :

expression값으로 평가한다. A statement는 무언가를한다.

>>> x + 2         # an expression
>>> x = 1         # a statement 
>>> y = x + 1     # a statement
>>> print y       # a statement (in 2.x)
2


답변

명령문은 조치 또는 명령을 나타냅니다 (예 : 인쇄 문, 지정 문).

print 'hello', x = 1

식은 결과 값을 산출하는 변수, 연산 및 값의 조합입니다.

5 * 5 # yields 25

마지막으로 표현 문

print 5*5


답변

식은 예를 들어 "1+3"또는 과 같이 값으로 줄일 수있는 것입니다 "foo = 1+3".

확인하기 쉽습니다.

print foo = 1+3

그것이 작동하지 않으면, 그것은 진술입니다. 만약 그렇다면, 그것은 표현입니다.

또 다른 진술은 다음과 같습니다.

class Foo(Bar): pass

값으로 줄일 수 없습니다.


답변

  1. 표현식은 값을 리턴하는 명령문입니다. 따라서 할당의 오른쪽이나 메서드 호출에 대한 매개 변수로 나타날 수 있으면 식입니다.
  2. 상황에 따라 일부 코드는 표현식이거나 명령문 일 수 있습니다. 언어는 모호 할 때 두 언어를 구별 할 수있는 수단을 가지고있을 수 있습니다.

답변

표현은 무언가이고, 진술은 무언가를합니다.

표현식도 명령문이지만 리턴 값이 있어야합니다.

>>> 2 * 2          #expression
>>> print(2 * 2)     #statement

PS : 인터프리터는 항상 모든 표현식의 값을 인쇄합니다.