프로그래머가 한 번에 프로그램을 작성하고 정상적으로 실행할 수 있는 확률은 기본적으로 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)
import logging logging.basicConfig(level=logging.INFO)
$ python err.py INFO:root:n = 0 Traceback (most recent call last): File "err.py", line 8, inprint(10 / n) ZeroDivisionError: division by zero
위 내용은 파이썬 디버깅 방법은 무엇인가요? 파이썬 디버깅 명령어 사용법을 3분만에 알려드리겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!