python
우리 중 많은 사람들에게 Python 코드 디버깅은 인쇄 문을 추가하고 출력을 기반으로 무슨 일이 일어나는지 추론하는 것으로 귀결됩니다. 이상적이지는 않지만 어떤 이유로 사람들은 Python 디버거를 만지고 싶어하지 않습니다.
목차
<내비>
print
을(를) 사용하는 사람 중 하나라면 디버깅을 위해 나는 당신을 판단하지 않습니다 . 파이썬을 배우는 것은 어렵습니다. 프로그래밍은 어렵다. 인생은 힘들다. 이미 어려움을 겪고 있다면 또 다른 것을 배우는 것이 지겹다는 것을 이해합니다. 그리고 그 print 문을 코드에 추가하는 것은… 더 쉽습니다. 작은 고백:지금도 항상 하고 있습니다. 일부 사람들이 생각하는 것만큼 나쁘지 않습니다.
그런 다음, 코드에 인쇄 문을 추가하는 것만큼 쉬운 약간의 트릭을 가르쳐 드리겠습니다. 그러나 이 트릭은 무한한 디버깅 능력을 제공하며 필요한 경우 세계를 정복할 수 있게 해줍니다.
코드를 올바르게 디버그하기 위해 IDE가 필요하지 않습니다. 이 트릭은 가장 단순한 편집기와 Jupyter Notebook에서도 항상 작동합니다.
트릭은 다음과 같습니다. breakpoint()
명령을 사용하여 소위 중단점을 설정합니다. . 사용 중인 편집기나 IDE에 관계없이 일반적으로 성가신 인쇄 문을 삽입하는 지점에 코드에 삽입할 수 있습니다.
그렇게 하면 어떻게 됩니까? 알아 보자! 아래와 같은 간단한 프로그램을 만드십시오.
def add_two(x): return x + 2 for i in range(1, 10): a = add_two(i) breakpoint() print(a)
이것을 실행하면 REPL에서 실행하든, 명령줄에서 실행하든, IDE에서 실행하든 상관없이 PDB라는 Python 디버거에 빠지게 됩니다. 하지만 지금은?
위의 작은 프로그램을 시작하면 다음과 같이 됩니다.
$ python3 breakpointing.py > /home/erik/breakpointing.py(7)<module>() -> print(a) (Pdb)_
여기에서 볼 수 있는 몇 가지 사항이 있습니다.
breakpointing.py
) breakpoint()
호출에 의해 중단된 다음 명령이 표시됩니다. .Python 디버거는 REPL과 마찬가지로 실제로 완벽하게 작동하는 Python 셸입니다.
이 시점에서 현재 환경을 확인할 수 있습니다. a
의 값을 봅시다. 지금입니다:
(Pdb) print(a) 3 (Pdb) print(i) 1
인쇄 대신 다음과 같이 pdb 특정 명령 p를 사용할 수도 있습니다.
(Pdb) p a 3 (Pdb_ p i 1
그렇다면 다음 코드 줄을 실행하려면 어떻게 해야 할까요? 두 가지 옵션이 있습니다.
s
사용 또는 step
, 현재 행을 실행합니다. 디버거는 그 후 가능한 첫 번째 경우에 중지됩니다.n
사용 또는 next
, 현재 줄도 실행하지만 이제 현재 함수의 다음 줄에 도달할 때까지 디버거가 계속 실행됩니다.
더 명확하게 하려면 step
행복하게 함수 호출을 입력하고 해당 함수 내부에서 휴식을 취합니다. 대조적으로, next
반환될 때까지 함수를 실행하고 다음 줄에서 중단됩니다.
다른 디버거와 IDE에서도 이것을 'step into'(step 대신) 및 'step over'(next 대신)라고 부릅니다.
이제 다음 두 가지를 사용해 보겠습니다.
$ python3 breakpointing.py -> print(a) (Pdb) s 3 -> for i in range(1, 10): (Pdb) s -> a = add_two(i) (Pdb) n -> breakpoint() (Pdb) n -> print(a) (Pdb) n 4 -> for i in range(1, 10): (Pdb) s -> a = add_two(i) (Pdb) s --Call-- -> def add_two(x): (Pdb) s -> return x + 2 (Pdb) s --Return-- 5 -> return x + 2 (Pdb) s -> breakpoint() (Pdb)
보시다시피 add_two
에 대한 호출을 먼저 처리합니다. n
사용 . 두 번째로 s
를 사용하여 함수를 시작합니다. .
직접 시도할 수 있는 더 많은 명령이 있습니다. 모두 나열하지 않고 가장 유용한 것만 나열하겠습니다.
h
(help):사용 가능한 모든 명령을 인쇄합니다. 또한 인수를 취합니다. 예를 들면 다음과 같습니다. h c
c
가 무엇인지 알려줍니다. 명령은c
(계속):다음 중단점까지 실행 시작l
(list):현재 줄 주위에 소스 코드 나열p
:다음 표현식의 결과를 출력합니다. print()
을 호출하는 대신 이것을 사용할 수 있습니다. pp
:예쁜 인쇄, 사전과 같은 데이터 구조 인쇄에 유용전체 문서를 보려면 모든 명령이 나열된 Python 디버거 페이지로 이동하십시오.
이것은 매우 편리할 수 있지만 IDE가 제공하는 디버거에 뛰어드는 것이 좋습니다. VSCode 사용자라면 VSCode에서 Python 코드를 디버그하는 방법에 대한 자습서를 작성했습니다.
python
시범 생산 단계는 제품 개발 종료의 시작입니다. 파일럿 생산은 계약 제조에서 한 단계 떨어져 있으며 품질 관리 하에 새로운 방법, 생산 프로세스 및 시스템을 테스트하기 위해 신제품 출시 중에 엔지니어링 개발 마지막 단계에 사용됩니다. 파일럿 빌드는 일반적으로 최종 설계 프로토타입을 조립 라인으로 변환하기 위해 소량으로 수행됩니다. 파일럿 빌드 단위는 생산 품질이지만 생산 환경으로 바로 이동하기 전에 위험을 최소화하기 위해 더 작은 규모입니다. 다음은 파일럿 프로덕션으로 전환할 때 최대한 원활하게 전환하는 데 도움이 되는 몇 가지 팁
대부분의 사람들은 로봇에 대해 생각할 때 영화나 조립 자동차에 나오는 로봇을 상상하지만 우리 삶과 관련된 로봇을 고려하는 사람은 많지 않습니다. 로봇 공학은 발명된 이후 산업 분야의 기술 발전에 도움을 주었지만 이제는 의료를 비롯한 새로운 분야에 도전하고 있습니다. 그렇습니다. 로봇은 제조를 개선할 수 있을 뿐만 아니라 삶을 개선할 수 있습니다. 당신이 알고 있든 없든 우리 삶에는 매일 로봇이 있습니다. 로봇이 이메일을 통해 누군가에게 더 쉽게 연락하거나 한 곳에서 다른 곳으로 우리를 데려다 주는 것 외에 어떻게 우리의 삶을 개