파이썬의 EAFP 원칙은 무엇입니까?
파이썬에서 "EAFP 원리 사용"은 무엇을 의미합니까?예를 들어 주시겠습니까?
용어집에서:
용서를 구하는 것보다 용서를 구하는 것이 더 쉽습니다.이 일반적인 Python 코딩 스타일은 유효한 키 또는 속성의 존재를 가정하고 가정이 잘못된 것으로 판명될 경우 예외를 포착합니다.이 깨끗하고 빠른 스타일은 많은 사람들이 있는 것이 특징입니다.
try
그리고.except
진술들.이 기법은 C와 같은 많은 다른 언어에 공통적인 LBIL 스타일과 대조됩니다.
예를 들어 사전 키에 액세스하려는 시도를 들 수 있습니다.
EAFP:
try:
x = my_dict["key"]
except KeyError:
# handle missing key
LBIL:
if "key" in my_dict:
x = my_dict["key"]
else:
# handle missing key
LBIL 버전은 사전 내에서 키를 두 번 검색해야 하며, 읽기가 약간 느린 것으로 간주될 수도 있습니다.
다른 예를 들어 설명해 보겠습니다.
여기서는 파일에 액세스하여 콘솔에서 내용을 인쇄하려고 합니다.
LBIL - 도약하기 전에 보세요:
우리가 파일에 접근할 수 있는지 확인하고 가능하다면 파일을 열고 내용을 인쇄할 것입니다.파일에 액세스할 수 없으면 다음을 클릭합니다.else
부분. 이것이 경주 조건인 이유는 우리가 먼저 접근 확인을 하기 때문입니다.우리가 도착할 때쯤이면with open(my_file) as f:
일부 권한 문제(예: 다른 프로세스가 독점적인 파일 잠금을 얻는 경우)로 인해 더 이상 액세스할 수 없습니다.이 코드는 오류를 발생시킬 수 있으며 파일에 액세스할 수 있다고 생각했기 때문에 오류를 감지할 수 없습니다.
import os
my_file = "/path/to/my/file.txt"
# Race condition
if os.access(my_file, os.R_OK):
with open(my_file) as f:
print(f.read())
else:
print("File can't be accessed")
EAFP - 허가보다 용서를 구하는 것이 더 쉽습니다.
이 예에서는 파일을 열려고 할 뿐이며 파일을 열 수 없으면 파일이 다음과 같이 됩니다.IOError
가능하면 파일을 열고 내용을 인쇄하겠습니다.그래서 우리는 무언가를 묻는 대신에 그것을 하려고 합니다.효과가 있다면, 좋습니다!그렇지 않으면 오류를 파악하여 처리합니다.
# # No race condition
try:
f = open(my_file)
except IOError as e:
print("File can't be accessed")
else:
with f:
print(f.read())
저는 그것을 "낙관적 프로그래밍"이라고 부릅니다.그 생각은 대부분 사람들이 옳은 일을 할 것이고, 실수는 적어야 한다는 것입니다.그래서 "옳은 일"이 일어나기 위해 먼저 코드를 작성하고, 그렇지 않으면 오류를 파악합니다.
제 생각에는 사용자가 실수를 할 경우 시간적 결과를 감수해야 합니다.올바른 방법으로 도구를 사용하는 사람들은 빠르게 통과됩니다.
언급URL : https://stackoverflow.com/questions/11360858/what-is-the-eafp-principle-in-python
'programing' 카테고리의 다른 글
루비 배열에서 문자열로 변환 (0) | 2023.06.05 |
---|---|
org.gradle.api.message.리소스 예외:Android Studio 3.2에서 리소스를 가져올 수 없습니다. (0) | 2023.06.05 |
인쇄물과 인쇄물의 차이점은 무엇입니까? (0) | 2023.05.31 |
로컬 cocoapods 캐시에서 특정 포드를 지우거나 치료하는 방법 (0) | 2023.05.31 |
C# 유형에 해당하는 Visual Basic 검사 (0) | 2023.05.31 |