Python ellipsis의 사용법 상세 설명

4445 단어 Pythonellipsis
배경
Python의 기본 유형 중 단일 모드의 값은 세 개의 None 유형의 None, NotImplemented 유형의 NotImplemented, Ellipsis 유형의...
None은 이미 썩은 거리를 썼고, Not Implemented도 비교적 자주 사용하는데, 유독...강호에서는 그것이 3대 거두 중의 하나라는 것만 알지만 그 용법을 모른다.
Ellipsis
Ellipsis는python에서'생략'을 대표하는데, 현재의 유형어로 표현하면'늙은 철, 이런 디테일에 신경 쓰지 마!'이다.언제 다른 사람에게 이런 세부 사항을 신경 쓰지 말라고 말해야 합니까?그중의 한 장면은 바로 랜덤 값이다.
문서 테스트용
가령 우리가 하나의 종류를 작성했다면, 이것이 문법 차원의 오류가 있는지 알고 싶다면, 간단하게 호출하기만 하면 테스트할 수 있다.이 테스트를 자동화하기 위해 문서 테스트를 만들었다.

#!/usr/bin/evn python3

class Person(object):
  """ 
  Parameters:
  ----------
    name: str
    age: int

  Return:
  ------

  >>> Person()
  <main.Person object at 0x7ff36c1ca250>
  """

  name = ''
  age = 0

  def __init__(self, name: str = 'tom', age: int = 10) -> 'Person':
    """ 
    """
    self.name = name
    self.age = age

  def say_hello(self) -> str:
    """ 
    """
    return f"Hello My name is {self.name} ."
우리가 테스트 용례를 실행할 때 오류를 보고합니다. 왜냐하면 매번 만들어진 대상의 메모리 주소는 테스트 용례에서 지정한 것과 같지 않고, 우리의 용례에 기록되어 있기 때문입니다.물론 이 문제는 유니테스트로 해결할 수 있지만, 이것은 여기서 말할 것이 아니다.

python3 -m doctest main.py -v
Trying:
  Person()
Expecting:
  <main.Person object at 0x7ff36c1ca250>
**********************************************************************
File "/private/tmp/main.py", line 12, in main.Person
Failed example:
  Person()
Expected:
  <main.Person object at 0x7ff36c1ca250>
Got:
  <main.Person object at 0x7fe4e078ac70>
3 items had no tests:
  main
  main.Person.__init__
  main.Person.say_hello
**********************************************************************
1 items had failures:
  1 of  1 in main.Person
1 tests in 4 items.
0 passed and 1 failed.
***Test Failed*** 1 failures.
어떻게 해야만 Doctest 이 늙은 철에게 되돌아오는 값의 세부 사항을 신경 쓰지 말라고 알려줄 수 있습니까?답은 Ellipsis라는 지령을 덧붙여 개조한 코드는 다음과 같다.

#!/usr/bin/evn python3


class Person(object):
  """ 
  Parameters:
  ----------
    name: str
    age: int

  Return:
  ------

  >>> Person() #doctest: +ELLIPSIS
  <main.Person object at 0x...>
  """

  name = ''
  age = 0

  def __init__(self, name: str = 'tom', age: int = 10) -> 'Person':
    """ 
    """
    self.name = name
    self.age = age

  def say_hello(self) -> str:
    """ 
    """
    return f"Hello My name is {self.name} ."
운행 테스트 용례는 이제 통과할 수 있다.

python3 -m doctest main.py -v
Trying:
  Person() #doctest: +ELLIPSIS
Expecting:
  <main.Person object at 0x...>
ok
3 items had no tests:
  main
  main.Person.__init__
  main.Person.say_hello
1 items passed all tests:
  1 tests in main.Person
1 tests in 4 items.
1 passed and 0 failed.
Test passed.
기타
만약 우리가 모듈을 위해 테스트 용례를 추가한다면, 이렇게 하면 좀 편리할 것이다.

#!/usr/bin/evn python3


class Person(object):
  """ 
  Parameters:
  ----------
    name: str
    age: int

  Return
  ------

  >>> Person() #doctest: +ELLIPSIS
  <...Person object at 0x...>
  """

  name = ''
  age = 0

  def __init__(self, name: str = 'tom', age: int = 10) -> 'Person':
    """ 
    """
    self.name = name
    self.age = age

  def say_hello(self) -> str:
    """ 
    """
    return f"Hello My name is {self.name} ."


if __name__ == "__main__":
  #   import   __name__       “__main__” , 
  #  
  import doctest
  doctest.testmod()
이상은 Python ellipsis의 용법에 대한 상세한 내용입니다. 더 많은 Python ellipsis에 관한 자료는 저희 다른 관련 문장을 주목하세요!

좋은 웹페이지 즐겨찾기