programing

파이썬에서 EAFP 원칙은 무엇입니까?

new-time 2020. 7. 18. 23:48
반응형

파이썬에서 EAFP 원칙은 무엇입니까?


파이썬에서 "EAFP 원칙 사용"이란 무엇입니까? 예를 들어 주시겠습니까?


로부터

용어집

:

허가보다 용서를 구하는 것이 더 쉽습니다. 이 일반적인 파이썬 코딩 스타일은 유효한 키 또는 속성이 있다고 가정하고 가정이 거짓으로 판명되면 예외를 포착합니다. 이 깨끗하고 빠른 스타일은 많은 사람들의 존재에 의해 특징

try

except

문. 이 기술 은 C와 같은 다른 많은 언어에 공통적 인

LBYL 스타일

과 대조 됩니다.

사전 키에 액세스하려는 시도가 그 예입니다.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

반응형