python - 파이썬 %s




파이썬에서 잘못된/잘못된 인수 조합에 대해 어떤 예외를 제기해야합니까? (4)

나는 파이썬에서 잘못된 인수 조합을 나타내는 최상의 방법에 대해 궁금해했다. 나는 다음과 같은 함수가있는 몇 가지 상황을 발견했습니다.

def import_to_orm(name, save=False, recurse=False):
    """
    :param name: Name of some external entity to import.
    :param save: Save the ORM object before returning.
    :param recurse: Attempt to import associated objects as well. Because you
        need the original object to have a key to relate to, save must be
        `True` for recurse to be `True`.
    :raise BadValueError: If `recurse and not save`.
    :return: The ORM object.
    """
    pass

이것에 대한 유일한 불만은 모든 패키지가 일반적으로 약간 다른 BadValueError 입니다. Java에서 java.lang.IllegalArgumentException 이 있다는 것을 알고 있습니다 - 모든 사람들이 Python에서 자신의 BadValueError 만들거나 다른 선호하는 메소드가 있다는 것을 잘 알고 있습니까?


나는 ValueError 상속에 동의하지 않는다. 나의 문서 해석은 ValueError 가 내장 ValueError의해서만 발생한다고 가정한다. 상속을 받거나 스스로를 올리는 것은 잘못된 것처럼 보인다.

기본 제공 연산 또는 함수가 올바른 형식이지만 부적절한 값을 갖는 인수를 받으면이 상황은 IndexError와 같은보다 정확한 예외로 설명되지 않습니다.

- ValueError 문서


대부분이 상황에서 ValueError 가 내장 된 것을 보았습니다.


보다 구체적인 예외가 필요하지 않는 한, ValueError .

def import_to_orm(name, save=False, recurse=False):
    if recurse and not save:
        raise ValueError("save must be True if recurse is True")

class BadValueError(ValueError):pass 를 수행 할 필요가 없습니다 class BadValueError(ValueError):pass - 사용자 정의 클래스가 ValueError 와 사용상 동일하므로 사용하지 않는 이유는 무엇입니까?


이 문제를 해결하는 가장 좋은 방법은 파이썬 자체에서 처리하는 방법입니다. 파이썬은 TypeError를 발생시킵니다. 예 :

$ python -c 'print(sum())'
Traceback (most recent call last):
File "<string>", line 1, in <module>
TypeError: sum expected at least 1 arguments, got 0

우리 Junior Dev는 방금 "python exception wrong arguments"에 대한 Google 검색에서이 페이지를 발견했으며,이 질문에 대한 질문 이후 10 년 동안 제안 된 대답은 분명하지 않았던 것에 놀랐습니다.





arguments