ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python3 (3)오타론, vscode디버깅, 입출력, import모듈, install패키지, pypi&pip
    생활코딩 Python 2021. 11. 22. 00:06

    https://youtube.com/playlist?list=PLuHgQVnccGMDtnr4nTSFfmocHL5FeH1xR

     

    생활코딩 Python 입문수업

     

    www.youtube.com

     

    -------------------------

    7. 디버깅

    예상치 못한 오류를 버그

    버그를 없애는 행위 Debug

     

    버그를 없애는 기술 / 버그를 대하는 마음

    그런 만큼, 지금 여러분을 괴롭히는 오만가지 문제가 있을 겁니다.

    저와같은 중급자들은 여러분들의 어려움을 상상도 못할 정도일 것입니다.

    하지만 분명히 말씀드릴 수 있는것은

    조금만 능숙해지면 갑자기 코딩이 짠하고 편안해지는 순간이 올겁니다

    그때부턴 코딩이 아니라 여러분들이 해결하고자 하는 진짜 문제와 씨름할 수 있다.

     

    입문자를 괴롭히는 가장 큰 문제인 오타에 대해

     

    이런말이 있다

    코딩을 시작하고 얼마 안돼서 프로젝트를 시작했는데, 두달 정도 밤낮없이 코딩에 몰두했거든요

    근데 오류가 있대 아무리 봐도 잘못된게 없는데 동작을 안함. 그렇게 일주일이 지남

    일주일동안 똑같은 화면을 보고 있으면 어떻게 되는지 아세요?

    눈을 뜨면 코드가 보이고, 눈을 감아도 코드가 보여요. 정말 괴로움.

    알고보니 눈에 안보이는 특수문자가 코드에 들어가 있었다. 그때의 허망함은..

     

    놀라운 사실은 그렇게 일주일을 보냈더니, 제가 책을 안보고 코딩을 하고 있더라고요

    오타가 없으면 진도가 빨리 나가요. 하지만 오타는 실력을 확정시켜줍니다.

    어쩌면 우리 뇌는 실력을 확정해야하는 순간에 교묘하게 오타를 파견하는 걸지도 모릅니다(▽이게 맞는게 지쳤을 때 오타가 나는데 그땐 좀 돌아봐라 하면서). 오타를 너무 미워하지 마세요. 오타를 내지 않는것보다 중요한것은 상황을 긍정하는 겁니다.

    오타가 없어도 좋고 있어도 좋을 수 있다면 우리는 고통스럽지 않게 더 단단해질 수 있지 않을까요?

     

    오류에는 행복한 오류가 있고, 불행한 오류가 있다.

     

    - 오타는 행복한 오류다.

    이 문제를 해결하지 못하면 실행 자체가 안되는게 행복한 오류.

    - 불행한 오류는 논리적인 오류. 기획서를 잘못봤거나, 입력한 값이 잘못됐거나, 더 문제가 심각해짐.

    멀쩡하게 돌아가는것 같던 프로그램이 갑자기 이상하게 동작

    =>이런 오류는 핵전쟁을 유발할 수도 있고 통신을 마비시킬 수도 있다.

     

    이런 버그를 찾아내는 유용한 도구들을 소개.

    1.화면에 데이터를 출력하는 print함수.

    가장 단순하면서도 가장 유용한 디버깅 도구.

    내시경 카메라처럼 코드에 침투시켜서 데이터를 화면에 찍어볼 수 있다.

    마지막에 a의 변수값을 출력하는데, 제일 위에 있는거 보면 예상값은 1이 나와야 한다. 출력해보면 1이 아냐.

    ->그래서 중간쯤에 찍어봤더니 아직도 8이야. 그럼 그 위쪽에 문제가 있다는 말.

    ->위쪽의 반쯤에 프린트 해보고 이번에 1이면 그 아래쪽이 문제라는 말.

    문제를 일으키는 코드를 추적하는데 print()를 활용할 수 있다.

     

    2.

    print는 내시경 카메라

    debugger는 MRI => 프로그램의 실행을 중지 시키고 한줄 한줄 데이터의 변화를 파악할 수 있다.

    debugger는 소스코드가 어떻게 동작하는지 파악하는데도 더없이 좋은 도구.

     

    파이썬에는 기본적으로 debugger가 내장돼 있다. 근데 사용하기가 좀 불편함

    그래서 에디터가 제공하는 debugger를 쓰시는게 더 편리, 에디터마다 디버거가 있으니 사용법을 익히세요

    이걸 누르거나 작업 표시줄에 Run > Start Debugging

     

    이렇게 실행하기 전에 디버깅의 위치를 지정을 해야함. ▽안하면 그냥 실행이네

    추론으로 (▽오류가)어디에 있겠구나 하는 거기에 하는것.

    저쯤 갖다대면 빨간불이 흐릿하게 생기는데 클릭하면 불이들어옴

    실행을 breaking하는 포인트다 이거에요 ▽저 빨간색까지 실행해 저 빨간색의 줄은 실행 안하고

    런앤 디버깅을 누르면 목록이 나오는데 파이썬 파일을 디버깅할거기 때문에 그걸 선택해주고

     

    저 노란색 테두리의 화살표가 거기까지 실행됐다는걸 알려줌.

    그럼 왼쪽에 UI요소로 a라는 변수의 값이 1인걸 알려줌.

     

    저걸 누르면 그 다음 한줄만 실행되는것. 노란색 화살표가 밑으로 한줄씩 간다

    이렇게 실행시켜나가다가 a : 값이 딴걸로 바뀌면 그게 그 줄이 문제의 코드다.

    이 버튼은 다음 breakpoint까지 한번에 실행 또 눌렀는데 breakpoint가 없으면 다 실행하고 끝남

    옆에 버튼 다시 실행, 중지

    좋은거 쓰래요. 디버거를 쓰라는 말

     

    -------------------------

    8. 입력과 출력

    소프트웨어를 바라보는 또 하나의 중요한 관점은 입력과 출력

    모든 프로그램은 입력을 받아서 처리하고 그것을 출력함. 이게 프로그램의 본질

    프로그램을 익힌다는 것은 입력 / 처리 / 출력 에 대한 이론과 경험을 쌓아가는 여정.

     

    저 keyboard와 monitor 하나씩을 배워보자고, 하나 하고나면 안해본것도 할 수 있는 능력이 생김. 본질은 다 비슷하니까.

    원래 이름이 달라질 때 코드를 열고 데이터를 바꿔야 하는게 좀 그래

    실행을 할 때 프로그램이 사용자에게 이름을 물어보는걸로 바꿨음.

    input()이라는 간단한 코드하나로 사용자가 키보드로 친 결과를 반환할 수 있다

    다른 input을 배우지 않았다. input의 다른 코드를 쓰면

    파일에 있는 정보를 input으로 삼을 수도 있고

    마이크에서 들어온 데이터를 input으로 삼을 수도 있다.

     

    print는 화면에 출력하는건데, 

    어떻게 하냐에 따라서(▽다른 print() 코드겠지) 종이에 출력할 수도 있고

    소리로 출력할 수도 있고 이메일을 보낼 수도 있고, 웹사이트에 업로드해서 출력할 수도 있다

     

    -------------------------

    9. pypi pip

    SW Engineer들은 자신이 만든 SW를 무료로 제공하기도 하고 심지어 소스코드까지도 공개하기도 함

    이런 SW Engineer의 사교성을 극적으로 보여주는 사례가 파이피아이

    파이피아이를 이용하면 파이썬으로 만들어진 타인의 성취를 자신의 것에 이어붙여서 새로운 성취를 만들 수 있음.

     

    import random하면

    random이라고 하는 모듈을 로딩한것.

    random이라고 하는 모듈은 기본적으로 파이썬에 내장돼 있는데, 이것을 이 소스코드에서 이용하기 위해선 로딩을 해야됐다.

    이렇게 파이썬에 기본적으로 내장돼 있는 모듈을 스탠더드 라이브러리, 표준 라이브러리라고 부름.

     

    이렇게 내장돼있는것들 말고, 여러분을 포함한 파이썬 개발자가 만든 기능을 다른 개발자들이 사용할 수 있도록 제공해주는 여러가지 SW들이 존재. 그런 SW들을 우리가 다른 표현으로는 Package라고 부름

     

    그런 Package를 여러분이 쉽게 자신의 컴퓨터에 설치해서 사용할 수 있다면 여러분은 파이썬의 표준 라이브러리의 한계를 초월한, 이 세상에 있는 수많은 파이썬 엔지니어들이 이룩한 성취들을 갖고와서 새로운 성취를 만들어낼 수 있는 엄청난 가능성을 갖게되는것.

     

    표와 관련된 여러가지 작업을 하고 싶을 때, 파이썬에서는 이런것들을 굉장히 쉽게 할 수 있는 라이브러리들이, 패키지라고 하는 소프트웨어들이 존재함.

    그 중에 가장 유명한것이 Pandas

    Pandas를 한번 설치해 봅시다

    pypi.org

    파이썬으로 만든 패키지들을 저장하고, 검색할 수 있게 해주는 거대한 DB

    여기에 pandas라고 검색. 선택하면 설명이 나옴.

    설치하는법은 위에 그냥 나와있다. 저 명령어를 입력하면 됨.

    pip : pypi.org라는 사이트에 저장돼 있는 패키지를 여러분의 컴퓨터에 쉽게 설치할 수 있게 도와주는 소프트웨어

     

    터미널에 pip install pandas라고 쳐도 되는데

    이렇게 치는게 더 추천되는 방법

    pip라는 프로그램이 pypi.org라는 사이트에서 pandas라는 패키지를 다운로드 받아서 설치를 함.

    그 다음 .py파일을 새로 만들고

    import pandas(▽표준라이브러리가 있는곳으로 다운로드 하는 느낌인가보네) 라고 하면 이전에는 사용할 수 없던 걸 이젠 사용할 수 있게 됨.

     

    Pandas써보기

    보스턴 지역의 집값에 영향을 주는 여러 요소를 보여주는 표. csv로 다운받고 VSCode로 열면

    행들은 행으로 구분되고, 각각의 컬럼은 comma seperate values, csv 니까 콤마로 구분돼 있다.

     

    이런 csv데이터를 내가 분석하기가 쉽지 않다. 이걸 도와주는게 pandas

    pandas.read_csv()로 저렇게 읽으면 보기좋게 시각화 해줌

     

    앞뒤 5개만 출력해주고

    중간에 데이터는 ...

     

    앞쪽에 있는 데이터 5개만 출력하려면 house.head(), 2개만 하면 head(2)

     

    각각의 컬럼에 대한 성격을 파악하고 싶으면 충격적인 기능

    house.describe() 라고 하면 표에 대한 정보를 묘사해줌.

    몇개, 평균, 최소값... 등을 이렇게 일목요연하게 보여줌.

    데이터 과학을 하는사람들에겐 필수적인 도구.

     

    우리 수업에선 pandas자체가 중요한게 아니고, pandas와 같은 수많은 소프트웨어들을 검색해서 pip로 다운로드 받아서 그것을 사용해서 여러분의 어떤 소프트웨어를 빨리빨리 마치 레고블럭 조립하듯이 만들어낼 수 있는 힘을 갖게 된 것이 중요.

     

    print나 len같은 내장된 함수를 열어보면 그 안에 꽤 긴 코드가 포함돼있다.

    언젠간 여러분도 이런 함수를 만들거나, 만든 소프트웨어를 pypi에 업로드해서 다른 사람이 pip로 install 할 수 있는 날이 오길

     

    -------------------------

    10.수업을 마치며

     

    수업이 길면

    1.완주의 기쁨이 멀어짐.

    2.머릿속이 너무 복잡해서 아무것도 할 수가 없음.  ▽공감, 복습해야 하는데 까마득함. 어?그럼 나눠서 생각하면 되겠네

Designed by Tistory.