|
| 1 | + |
| 2 | +------------------------------------------------------------ |
| 3 | +강사 : 정대호 강사님 |
| 4 | +wifi : kgitbank@1004 |
| 5 | + |
| 6 | +------------------------------------------------------------ |
| 7 | +everything - windows 파일검색 툴 |
| 8 | + |
| 9 | +------------------------------------------------------------ |
| 10 | +훈련생 명단 엑셀문서를 공유폴더로 공유 |
| 11 | + |
| 12 | +------------------------------------------------------------ |
| 13 | +파이썬 설치 |
| 14 | +내가만든 파이썬 코드를 해설해줄 인터프리터 |
| 15 | + |
| 16 | +설치방법 |
| 17 | + 1.생파이썬 |
| 18 | + 2.아나콘다 종합선물세트 - 무거움, 문제를 덜 격음 |
| 19 | + |
| 20 | +------------------------ |
| 21 | +[아나콘다 설치] |
| 22 | + - 다운로드 : https://www.anaconda.com/download/success |
| 23 | + |
| 24 | +------------------------ |
| 25 | +[파이썬 설치] |
| 26 | + - 다운로드 : https://www.python.org/downloads/ |
| 27 | + |
| 28 | +------------------------------------------------------------ |
| 29 | +[Pycharm 설치] - communuity edition |
| 30 | + - https://www.jetbrains.com/ko-kr/pycharm/download/?section=windows |
| 31 | + |
| 32 | + |
| 33 | +------------------------------------------------------------ |
| 34 | +에디터 |
| 35 | + 에디터 GUI |
| 36 | + 리눅스 백엔드 - vim, - Helix 모달 에디터와 모달리티.., 단축키 활용 |
| 37 | + |
| 38 | + |
| 39 | + |
| 40 | +------------------------------------------------------------ |
| 41 | +파이썬아 너가 가지고 있는 모듈 http의 server 실행시켜쥐 |
| 42 | +python -m http.server |
| 43 | + |
| 44 | + |
| 45 | +------------------------------------------------------------ |
| 46 | +파일공유 윈도우 파일공유 |
| 47 | +[웹서버] |
| 48 | + 툴 - dufs: 르스트 언어로 개발된 툴, rust 설치 필요함 |
| 49 | + - 다운로드: https://github.com/sigoden/dufs/releases > 2번째 파일 |
| 50 | + |
| 51 | + - 공유폴더: http://192.168.51.6:5000/ |
| 52 | + |
| 53 | +------------------------------------------------------------ |
| 54 | +[문서화] |
| 55 | + - md(mark down) |
| 56 | + - 블로깅 |
| 57 | + - 노션 |
| 58 | + - 옵시디언 : https://obsidian.md/download |
| 59 | + - mdbook 이용(Rust) : |
| 60 | + - 파이썬 문서화 툴: 스핑스 |
| 61 | + - mkdocs: 기술 문서를 정리하기 좋은 tool, https://www.mkdocs.org/user-guide/installation/#installing-mkdocs |
| 62 | + - 얼터너티브 |
| 63 | + |
| 64 | +------------------------------------------------------------ |
| 65 | +단축키 (단축키 연습 vs-code) |
| 66 | + - ctrl + n : 파일 생성 |
| 67 | + - ctrl + s : 파일 저장 |
| 68 | + - ctrl + , : autosave afterdelay |
| 69 | + - ctrl + shift + p : vs-code 모든기능을 빠르게 검색 |
| 70 | + - ctrl + p : 파일검색 현재 열려있는 프로젝트에서 |
| 71 | + - ctrl + b : 왼쪽 여닫기 |
| 72 | + - ctrl + k + o :폴더 열기 |
| 73 | + - ctrl + - : 크기조정 |
| 74 | + - ctrl + `(백틱: 숫자 1번 좌측 키) : 터미널 오픈, select default profile 변경(command prompt 변경 후 터미널 재오픈) |
| 75 | + - ctrl + 0 : 왼쪽 탐색기 |
| 76 | + - ctrl + 1 : 주된 에디터 창 |
| 77 | + |
| 78 | +------------------------------- |
| 79 | + - ctrl + d : 선택 |
| 80 | + - ctrl + u : 선택 해제 |
| 81 | + - ctrl + shift + l : 지금 선택한 것을 전체에서 선택 |
| 82 | + - alt + shift + i : 여러줄 선택 |
| 83 | + - alt + shift + 마우스 : 여러개 선택 |
| 84 | + - alt + click : 원하는 곳에 집어넣기 |
| 85 | + |
| 86 | +------------------------------- |
| 87 | + - ctrl + k + 0 : 전체 줄이기 |
| 88 | + - ctrl + k + j : 전체 열기 |
| 89 | + |
| 90 | +------------------------------- |
| 91 | +[Multi-cursor and selection] - 매우 중요 |
| 92 | + - Alt + Click : Insert cursor |
| 93 | + - Ctrl + Alt+ ↑ / ↓ : Insert cursor above / below |
| 94 | + - Ctrl + U : Undo last cursor operation |
| 95 | + - Shift + Alt + I : Insert cursor at end of each line selected |
| 96 | + - Ctrl + L : Select current line |
| 97 | + - Ctrl + Shift + L : Select all occurrences of current selection |
| 98 | + - Ctrl + F2 : Select all occurrences of current word |
| 99 | + - Shift + Alt + → : Expand selection |
| 100 | + - Shift + Alt + ← : Shrink selection |
| 101 | + - Shift + Alt + (drag mouse) : Column (box) selection |
| 102 | + - Ctrl + Shift + Alt + (arrow key) : Column (box) selection |
| 103 | + - Ctrl + Shift + Alt + PgUp/PgDn : Column (box) selection page up/down |
| 104 | + |
| 105 | + |
| 106 | +------------------------------------------------------------ |
| 107 | +[아나콘다 설치 ( 파이썬을 포함하고 있다.)] |
| 108 | + - path 가 뭘까? |
| 109 | + - 경로 : path를 전역환경에 등록을 해주어야 한다. |
| 110 | + - 전역환경 |
| 111 | + - 어디서나 접근가능 |
| 112 | + |
| 113 | +------------------------------------------------------------ |
| 114 | + - 그래픽유저 인터페이스 |
| 115 | + - gui가 사용에 편함 |
| 116 | + - cli 환경 터미널 |
| 117 | + |
| 118 | +-------------------------------- |
| 119 | +아나콘다 설치 후 cmd 터미널 재실행 해야 적용됨 |
| 120 | + |
| 121 | +-------------------------------- |
| 122 | +python --version : 파이썬 버전 확인 |
| 123 | + |
| 124 | +관례적으로 |
| 125 | + - 약어(-) : -v |
| 126 | + - 풀네임(--) : --version |
| 127 | + |
| 128 | +-------------------------------- |
| 129 | +C:\Users\user>python --version |
| 130 | +Python 3.12.7 |
| 131 | + |
| 132 | +-------------------------------- |
| 133 | +자바 jdk 설치 path 잡고 버전확인 |
| 134 | +java -version |
| 135 | + |
| 136 | +-------------------------------- |
| 137 | + |
| 138 | +everything으로 검색(python.exe) |
| 139 | +C:\Users\user\anaconda3\pkgs\python-3.12.7-h14ffc60_0\python.exe |
| 140 | + |
| 141 | +아나콘다 설치 완료 |
| 142 | + - gui 환경에서 생성 |
| 143 | + - conda create -n first : first 환경 생성 |
| 144 | + - conda create -n second python==3.11 : second 환경 생성(파이썬 버전 3.11) |
| 145 | + - conda env list : |
| 146 | + |
| 147 | + |
| 148 | +------------------------------------------------------------ |
| 149 | +conda cheat sheet 활용 (https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf) |
| 150 | +cheat sheet : 마법키워드, 코딩공부할때 활용 |
| 151 | +docu |
| 152 | + |
| 153 | +conda 명령어 정리 |
| 154 | +pip install PackageName |
| 155 | +conda install PackageName |
| 156 | + |
| 157 | +conda로 가상환경 만들기 |
| 158 | +conda create --name py35 python=3.5 |
| 159 | + |
| 160 | + |
| 161 | +가상환경 활성화 : conda activate |
| 162 | +가상환경 비활성화 : conda deactivate |
| 163 | + |
| 164 | +conda env list : 환경들을 보여줌 |
| 165 | +conda list : 지금 이용되고 있는 환경에 설치된 패키지 나열(pip list) |
| 166 | + |
| 167 | +내 프로젝트의 의존성을 파일로 추출 |
| 168 | + - conda list --explicit > bio-env.txt |
| 169 | + requirements.txt |
| 170 | + |
| 171 | + - pip freeze > requirements.txt |
| 172 | + |
| 173 | +파일 읽어와서 가상환경 생성 |
| 174 | +conda env create --file bio-env.txt |
| 175 | + requirements.txt |
| 176 | +pip install -r requirements.txt |
| 177 | + |
| 178 | +------------------------------------------------------------ |
| 179 | +[주피터 노트북(ipynb => py) 단축키] |
| 180 | + - exc + a : 현재 상단에 셀 삽입 |
| 181 | + - exc + b : 현재 하단에 셀 삽입 |
| 182 | + - ctrl + shift + D : 모드 바꾸기 |
| 183 | + - ctrl + enter : 셀 실행 |
| 184 | + - MarkDown 테스트 : 모드를 마크다운으로 변경하고 "# 파이썬 프린트 문" 실행(ctrl + enter) |
| 185 | + |
| 186 | + |
| 187 | +----------------------------- |
| 188 | +[주피터 랩] |
| 189 | + |
| 190 | +------------------------------------------------------------ |
| 191 | +[Pycharm 설치] |
| 192 | + - 워크스페이스 (개념) |
| 193 | + -- 프로젝트01 |
| 194 | + ㄴ앱01 |
| 195 | + ㄴ앱02 |
| 196 | + -- 프로젝트02 |
| 197 | + -- 프로젝트03 |
| 198 | + |
| 199 | + |
| 200 | +------------------------------------------------------------ |
| 201 | +[파이썬 진입점] |
| 202 | + - if __name__ == "__main__" |
| 203 | + - 'name이라는 변수의 값이 main이라면 아래의 코드를 실행하라.'라는 뜻이다. |
| 204 | + 즉, 메인 함수의 선언, 시작을 의미이며, 현재 스크립트 파일이 실행되는 상태를 파악하기 위해 사용한다. |
| 205 | + |
| 206 | + if __name__ == '__main__':처럼 __name__ 변수의 값이 __main__인지 확인하는 코드는 현재 스크립트 파일이 프로그램의 시작점이 맞는지 판단하는 작업이다. |
| 207 | + 즉, 스크립트 파일이 메인 프로그램으로 사용될 때와 모듈로 사용될 때를 구분하기 위한 용도! |
| 208 | + 쉽게 생각하면 모듈에 if __name__=='__main__'이라는 조건문을 넣어주고 그 아래는 직접 실행시켰을 때만 실행되길 원하는 코드들을 넣어주는 것으로 생각하면 쉬울 것이다. 끝 :) |
| 209 | + |
| 210 | + 출처: https://velog.io/@mjk3136/if-name-main%EC%9D%80-%EC%99%9C-%ED%95%84%EC%9A%94%ED%95%9C%EC%A7%80%EC%97%90-%EB%8C%80%ED%95%B4-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 |
| 211 | + |
| 212 | + |
| 213 | + - 파이썬에서 진입점 만들기 |
| 214 | + - 더블언더스코어(던더) |
| 215 | + - 던더메소드, 스페셜메소드, 매직메소드(파이썬 공식) |
| 216 | + - if __name__ == "__main__" |
| 217 | +------------------------------------- |
| 218 | + __name__ 변수는 현재 모듈의 이름을 담고 있는 내장 변수입니다. 모듈이 직접 실행되었는지(import 되었는지 아닌지) 판단할 때 __name__ 변수의 값을 사용합니다. |
| 219 | + 일반적으로, 모듈은 직접 실행되거나 다른 모듈에서 import 되어 사용됩니다. 만약 모듈이 직접 실행되면, __name__ 변수는 문자열"__main__"이 할당됩니다. |
| 220 | + 반대로, 모듈이 import 되어 사용될 때는,__name__변수는 해당 모듈의 이름(파일명)이 할당됩니다. |
| 221 | + 따라서, __name__ 변수의 값을"__main__"과 비교하면 현재 모듈이 직접 실행되는지(import 되는지)를 판단할 수 있습니다. |
| 222 | + 따라서 코드를 ifname == "main"로감싸면, 해당 파일이 모듈로 사용될 때는 실행되지 않고, 직접 실행될 때만 실행됩니다. |
| 223 | + |
| 224 | + 장점: |
| 225 | + 드가 실행되지 않으므로, 다른 모듈에서 해당 모듈을 import 할 때 발생할 수 있는 부작용을 방지할 수 있습니다. |
| 226 | + 트 코드를 추가하고 싶을 때,if name == "main":구문을 활용하여, 해당 모듈을 직접 실행할 때만 테스트 코드가 실행되도록 할 수 있습니다. |
| 227 | + |
| 228 | + 단점: |
| 229 | + 가 직접 실행될 때와 모듈로 사용될 때 각각 다르게 작동하는 경우가 있다면, 이를 고려해야 합니다. |
| 230 | + |
| 231 | + 출처: https://wikidocs.net/195615 |
| 232 | + |
| 233 | +------------------------------------- |
| 234 | + __name__ |
| 235 | + 파이썬은 다양한 정보를 담고있는 내장변수가 존재한다. 이중에서 __name__이라는 내장변수를 알아보도록 하겠다. |
| 236 | + 이는 현재 모듈의 이름을 담고있는 내장 변수이다. 이 변수는 직접 실행된 모듈의 경우 __main__이라는 값을 가지게 되며, |
| 237 | + 직접 실행되지 않은 import된 모듈은 모듈의 이름(파일명)을 가지게 된다. |
| 238 | + |
| 239 | + 출처: https://hyoje420.tistory.com/45 |
| 240 | + |
| 241 | + |
| 242 | +------------------------------------------------------------ |
| 243 | +파이썬은 동적 타입 언어(강타입: 타입을 명시하는 언어) |
| 244 | + - 정적 타이핑: 자료형 검사가 컴파일타임 동안 진행되면 정적 타이핑으로 분류한다. |
| 245 | + 대표적으로 C, C++, JAVA 등의 컴파일 언어가 이에 해당. |
| 246 | + - 동적 타이핑: 자료형 검사가 런타임 동안 진행되면 동적 타이핑으로 분류한다. |
| 247 | + PHP, python, Ruby 등의 인터프리터 언어가 이에 해당된다. |
| 248 | + |
| 249 | + 출처: https://velog.io/@mquat/python-%EC%A0%95%EC%A0%81-%ED%83%80%EC%9D%B4%ED%95%91-vs-%EB%8F%99%EC%A0%81-%ED%83%80%EC%9D%B4%ED%95%91 |
| 250 | + |
| 251 | + |
| 252 | + |
| 253 | +------------------------------------------------------------ |
| 254 | +대괄호 [] 스퀘어 브라켓 |
| 255 | +중괄호 {} 브라켓 |
| 256 | +괄호 () 브레이스 |
| 257 | +` 벡틱 |
| 258 | +| 파이프 |
| 259 | +* 아스타리스크 |
| 260 | +_ 언더스코어 |
| 261 | +: 콜론 |
| 262 | +; 세미콜론 |
| 263 | +^ 케럿 |
| 264 | +& 엠퍼센드 |
| 265 | +@ 골뱅이 |
| 266 | + |
| 267 | + |
| 268 | +------------------------------------------------------------ |
| 269 | +[ 파이썬 ] 풍부한 표준 라이브러리 |
| 270 | +배터리 인클루디드 |
| 271 | + |
| 272 | + |
| 273 | +------------------------------------------------------------ |
| 274 | +[PEP의 존재] |
| 275 | + - PEP 8: Stype Guide for Python Code ── 파이썬 표준 스타일 가이드 |
| 276 | + - PEP 20:The Zen of Python ── 파이썬 설계 가이드라인 |
| 277 | + - PEP 257:Docstring Conventions ── 문서 작성 방법 |
| 278 | + -- autoDocstring 확장 프로그램 설치: Python Docstring Generator |
| 279 | + |
| 280 | +------------------------------------------------------------ |
| 281 | +[ 파이썬 확장 프로그램] |
| 282 | + - Black Formatter |
| 283 | + |
| 284 | +------------------------------------------------------------ |
| 285 | +[타입힌트 : 타입을 알려준다] |
| 286 | + |
| 287 | +------------------------------------------------------------ |
| 288 | +Pycharm 기능 찾을때 |
| 289 | +윈쪽 shift 2번 |
| 290 | +ctrl + Shift + C 절대경로 복사 |
| 291 | + |
| 292 | +cd 절대경로 |
| 293 | +python test.py |
| 294 | + |
| 295 | + |
| 296 | +------------------------------------------------------------ |
| 297 | +[Docker 이용] |
| 298 | + |
| 299 | +------------------------------------------------------------ |
| 300 | +[윈도우에서 리눅스 명령어 사용] |
| 301 | + |
| 302 | + |
| 303 | +------------------------------------------------------------ |
| 304 | +[git 설치] |
| 305 | + - git bash 설치 |
| 306 | + |
| 307 | + |
| 308 | +------------------------------------------------------------ |
| 309 | +[주피터 랩] |
| 310 | + |
| 311 | +------------------------------------------------------------ |
| 312 | +[Python 인터프리터의 2가지 모드] |
| 313 | + - 대화형 모드 인터프리터 |
| 314 | + - jupyterLab : 웹 브라우저에서 대화형 모드 실행 |
| 315 | + |
| 316 | +------------------------------------------------------------ |
| 317 | +눈으로 보는게 제일 좋음 |
| 318 | +디버깅 |
| 319 | +프린트 잘찍어 타입확인 잘하고 모듈화 잘하고 디자인패턴 |
| 320 | +------------------------------------------------------------ |
| 321 | +모듈 : 파이썬에서 py파일 자체를 뜻함 |
| 322 | +패키지: 모듈들이 모여있는 폴더 + __init__.py 가 있는 거 |
| 323 | + |
| 324 | +# 라이브러리 혼용 : 파이썬에서 사용 안함 |
| 325 | + |
| 326 | +import os.py # 모듈 임포트 필요 |
| 327 | + |
| 328 | +변수 |
| 329 | +함수 |
| 330 | +클래스 |
| 331 | +모듈속에 있는 함수 |
| 332 | + |
| 333 | +os.getcwd() |
| 334 | + |
| 335 | +------------------------------------------------------------ |
| 336 | +[함수] |
| 337 | + - 무엇일까? |
| 338 | + - 수학 |
| 339 | + |
| 340 | + - 존재 중복제거 : 재사용성 |
| 341 | + |
| 342 | + - 리턴을 가진다. |
| 343 | + - None을 리턴함 |
| 344 | + - 인풋이 있던 없던 |
| 345 | + |
| 346 | + - 가인수 , 파라미터, 매개변수 |
| 347 | + - 함수명, 파라미터, 내마음 이름 |
| 348 | + |
| 349 | + def asdf(): |
| 350 | + ... ellipses |
| 351 | + pass |
| 352 | + return |
| 353 | + |
| 354 | + # 함수정의 |
| 355 | + def asdf(a): |
| 356 | + ret = a + 2 |
| 357 | + return ret |
| 358 | + |
| 359 | + |
| 360 | + # 함수를 정의함 |
| 361 | + def increment(n): |
| 362 | + n += 1 # 복합대입연산자 ( -=, *=, /=), n = n + 1 |
| 363 | + return n # 다음 행은 빈 상태로 Enter키 입력 |
| 364 | + |
| 365 | +------------------------------------------------------------ |
| 366 | +# NameError는 발생하지 않음 |
| 367 | +increment |
| 368 | +increment (7) |
| 369 | + |
| 370 | +------------------------------------------------------------ |
| 371 | + |
| 372 | + |
| 373 | +------------------------------------------------------------ |
| 374 | + |
| 375 | + |
| 376 | + |
| 377 | + |
| 378 | +------------------------------------------------------------ |
| 379 | + |
| 380 | +------------------------------------------------------------ |
| 381 | + |
| 382 | + |
| 383 | +------------------------------------------------------------ |
| 384 | + |
| 385 | + |
| 386 | + |
| 387 | + |
| 388 | +------------------------------------------------------------ |
| 389 | + |
| 390 | +------------------------------------------------------------ |
0 commit comments