파이썬에서 표현과 문장의 차이점은 무엇입니까?
답변
표현식 에는 식별자 , 리터럴 및 연산자 만 포함 됩니다 . 연산자에는 산술 및 부울 연산자, 함수 호출 연산자 ()
에는 구독 연산자 []
등이 포함되어 있으며 어떤 종류의 “값”(모든 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 , Primaries 및 Operators 조합으로 구성 됩니다.
표현의 예 :
연산자 및 내장 함수 또는 사용자 작성 함수 호출과의 리터럴 및 구문 상 올바른 조합 :
>>> 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의 진술 :
컴퓨터 프로그래밍에서 문장은 명령형 프로그래밍 언어의 가장 작은 독립형 요소로 생각할 수 있습니다. 프로그램은 하나 이상의 명령문으로 구성됩니다. 명령문에는 내부 구성 요소 (예 : 표현식)가 있습니다.
총체적인 용어로 : 진술은 무언가를 하고 종종 표현 (또는 다른 진술)으로 구성됩니다
파이썬 언어 레퍼런스는 간단한 문장 과 복합 문장을 광범위하게 다루고 있습니다.
“표현은 무언가를한다”와 “표현은 가치를 만들어 낸다”는 구별은 모호해질 수있다.
- 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
값으로 줄일 수 없습니다.
답변
- 표현식은 값을 리턴하는 명령문입니다. 따라서 할당의 오른쪽이나 메서드 호출에 대한 매개 변수로 나타날 수 있으면 식입니다.
- 상황에 따라 일부 코드는 표현식이거나 명령문 일 수 있습니다. 언어는 모호 할 때 두 언어를 구별 할 수있는 수단을 가지고있을 수 있습니다.
답변
표현은 무언가이고, 진술은 무언가를합니다.
표현식도 명령문이지만 리턴 값이 있어야합니다.
>>> 2 * 2 #expression
>>> print(2 * 2) #statement
PS : 인터프리터는 항상 모든 표현식의 값을 인쇄합니다.