파이썬에서 EAFP 원칙은 무엇입니까?
파이썬에서 "EAFP 원칙 사용"이란 무엇입니까? 예를 들어 주시겠습니까?
로부터
:
허가보다 용서를 구하는 것이 더 쉽습니다. 이 일반적인 파이썬 코딩 스타일은 유효한 키 또는 속성이 있다고 가정하고 가정이 거짓으로 판명되면 예외를 포착합니다. 이 깨끗하고 빠른 스타일은 많은 사람들의 존재에 의해 특징및
try
문. 이 기술 은 C와 같은 다른 많은 언어에 공통적 인 과 대조 됩니다.
except
사전 키에 액세스하려는 시도가 그 예입니다.EAFP :
try:
x = my_dict["key"]
except KeyError:
# handle missing key
LBYL :
if "key" in my_dict:
x = my_dict["key"]
else:
# handle missing key
LBYL 버전은 사전 내부의 키를 두 번 검색해야하며 읽기가 다소 어려울 수도 있습니다.
"낙관적 프로그래밍"이라고합니다. 아이디어는 대부분 사람들이 올바른 일을 할 것이며 오류는 적어야한다는 것입니다. 따라서 "올바른 일"이 발생하도록 먼저 코드를 작성하고 그렇지 않은 경우 오류를 포착하십시오.내 생각은 사용자가 실수를한다면 시간의 결과를 겪는 사람이어야한다는 것입니다. 올바른 방법으로 도구를 사용하는 사람들이 속속입니다.
다른 예를 들어 설명하려고합니다.여기서 우리는 파일에 액세스하고 콘솔에서 내용을 인쇄하려고합니다.
LBYL-당신이 도약하기 전에 살펴보십시오 :
파일에 액세스 할 수 있는지 확인하고 가능하면 파일을 열고 내용을 인쇄합니다. 파일에 액세스 할 수 없으면 그
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' 카테고리의 다른 글
Javascript에서 document.body가 null 인 이유는 무엇입니까? (0) | 2020.07.18 |
---|---|
Internet Explorer에서 콘솔 로깅을 사용하려면 어떻게해야합니까? (0) | 2020.07.18 |
호스트의 도커 장착 볼륨 (0) | 2020.07.18 |
Random 및 OrderBy를 사용하는 것이 좋은 셔플 알고리즘입니까? (0) | 2020.06.02 |
Android ACTION_IMAGE_CAPTURE 인 텐트 (0) | 2020.06.02 |