> 백엔드 개발 > 파이썬 튜토리얼 > Python의 Eval, Exec, Compile: 차이점은 무엇입니까?

Python의 Eval, Exec, Compile: 차이점은 무엇입니까?

DDD
풀어 주다: 2024-12-19 08:08:13
원래의
781명이 탐색했습니다.

Eval vs. Exec vs. Compile in Python: What's the Difference?

Eval, Exec 및 Compile: 비교 분석

기능의 차이점

Eval은 단일 표현식을 동적으로 평가하고 결과를 반환합니다.
Exec는 주어진 코드 블록을 선택하고 그 반환 값을 버립니다. 주로 부작용 때문에 사용됩니다.

컴파일 및 모드

컴파일은 평가와 실행 모두에서 중요한 역할을 합니다.

  • 'eval' 모드: 단일 표현식을 평가된 결과를 반환하는 바이트코드로 컴파일합니다. value.
  • 'exec' 모드: 모든 유형의 코드 조각을 None을 반환하는 바이트코드로 컴파일합니다(Python 2에서는 명령문이었고 아무것도 반환하지 않았습니다).

구문과 차이점

Python 2

  • Exec는 명령문입니다.
  • Eval은 함수입니다.
  • Exec는 전역 및 지역을 정의하기 위해 길이가 2 또는 3인 튜플을 허용합니다( 뒤로 해킹 호환성).

Python 3

  • Exec는 함수입니다.
  • Exec와 eval은 코드 객체를 전달할 때 동일하게 동작합니다. .

자세히 비교

식 평가:

  • Exec는 식을 직접 허용하지 않습니다.
  • Eval은 단일 식만 문자열 또는 코드 개체로 허용합니다.

사이드 효과:

  • Exec는 변수 수정이나 함수 호출과 같은 부작용에만 사용됩니다.
  • Eval에는 부작용이 없으며 평가된 표현식의 값을 반환합니다.

문장 및 코드 블록:

  • Exec는 명령문, 루프 및 가져오기가 포함된 코드 블록을 허용합니다.
  • Eval은 명령문을 직접 처리할 수 없습니다. 명령문에 대해 컴파일된 코드 객체가 필요합니다.

사용 예

계산 및 인쇄:

a = 5
result = eval('37 + a')   # Eval calculates the expression and returns the result (42)
exec('print(37 + a)')     # Exec executes the code (prints 42)
로그인 후 복사

변수 수정:

a = 2
exec('a = 47')            # Exec modifies the global variable `a`
result = eval('a = 47')     # Eval throws an error because it cannot handle statements
로그인 후 복사

위 내용은 Python의 Eval, Exec, Compile: 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿