파이썬 디버깅 방법은 무엇인가요? 파이썬 디버깅 명령어 사용법을 3분만에 알려드리겠습니다.

Tomorin
풀어 주다: 2018-08-23 17:47:40
원래의
2593명이 탐색했습니다.

프로그래머가 한 번에 프로그램을 작성하고 정상적으로 실행할 수 있는 확률은 기본적으로 1%를 넘지 않을 정도로 매우 작습니다. 수정해야 할 다양한 버그가 항상 존재합니다. 어떤 버그는 매우 간단합니다. 어떤 버그는 매우 복잡합니다. 따라서 오류가 발생했을 때 어떤 변수가 올바른 값을 가지고 있는지 알아야 합니다. 버그를 수정하기 위해 프로그램을 디버깅하는 완전한 수단입니다. 프로그래밍에서는 이 방법을 디버깅 명령이라고 합니다.

첫 번째 방법은 간단하고 직접적이며 조잡하고 효과적입니다. print()를 사용하여 문제가 있을 수 있는 변수를 인쇄하고 살펴보는 것입니다.

def foo(s):
    n = int(s)
    print('>>> n = %d' % n)    return 10 / ndef main():
    foo('0')
main()
로그인 후 복사

실행 후 출력에서 ​​인쇄된 항목을 찾습니다. 변수 값:

$ python err.py
>>> n = 0
Traceback (most recent call last):
  ...
ZeroDivisionError: integer division or modulo by zero
로그인 후 복사

print() 사용의 가장 큰 단점은 나중에 삭제해야 한다는 것입니다. 프로그램을 실행하면 실행 결과에도 많은 정크 정보가 포함됩니다. 그래서 두 번째 방법이 있습니다.

Assertion

Assert는 보기를 지원하기 위해 print()가 사용되는 모든 곳에서 사용할 수 있습니다. :

def foo(s):
    n = int(s)    assert n != 0, 'n is zero!'
    return 10 / ndef main():
    foo('0')
로그인 후 복사

assert는 표현식 n != 0이 True여야 함을 의미합니다. 그렇지 않으면 프로그램 작동 논리에 따라 다음 코드가 확실히 잘못될 것입니다.

어설션이 실패하면 Assertion 문 자체에서 AssertionError가 발생합니다.

$ python err.py
Traceback (most recent call last):
  ...
AssertionError: n is zero!
로그인 후 복사

프로그램이 어설션으로 가득 차 있으면 print()보다 나을 것이 없습니다. 그러나 -O 매개변수를 사용하면 Python 인터프리터를 시작할 때 어설션을 끌 수 있습니다.

$ python -O err.py
Traceback (most recent call last):
  ...
ZeroDivisionError: division by zero
로그인 후 복사

해제한 후에는 모든 어설션 문을 패스로 볼 수 있습니다.

logging

print()를 로깅으로 바꾸는 것이 세 번째 방법입니다. 주장과 비교하면 로깅은 오류를 발생시키지 않으며 파일로 출력할 수 있습니다. #🎜🎜 #

import logging
s = '0'
n = int(s)
logging.info('n = %d' % n)
print(10 / n)
로그인 후 복사

logging.info()는 텍스트를 출력할 수 있습니다. 실행해 보면 ZeroDivisionError 외에는 정보가 없는 것을 확인할 수 있습니다. 무슨 일이야?

걱정하지 마세요. 로깅을 가져온 후 구성 줄을 추가하고 다시 시도하세요.

import logging
logging.basicConfig(level=logging.INFO)
로그인 후 복사

출력 보기:

$ python err.py
INFO:root:n = 0
Traceback (most recent call last):
  File "err.py", line 8, in <module>
    print(10 / n)
ZeroDivisionError: division by zero
로그인 후 복사
이것은 디버그, 정보, 경고, 오류 등을 포함한 로깅 정보 수준을 지정할 수 있는 로깅의 이점. level=INFO를 지정하면 login.debug가 작동하지 않습니다. 같은 방식으로 level=WARNING을 지정한 후에는 디버그 및 정보가 작동하지 않습니다. 이런 방식으로 다양한 수준의 정보를 삭제하지 않고도 안전하게 출력할 수 있으며 최종적으로 어떤 수준의 정보가 출력되는지 제어할 수 있습니다.

로깅의 또 다른 이점은 간단한 구성을 통해 콘솔, 파일 등 동시에 다른 위치에 명령문을 출력할 수 있다는 것입니다.

 


위 내용은 파이썬 디버깅 방법은 무엇인가요? 파이썬 디버깅 명령어 사용법을 3분만에 알려드리겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿