블로그 이미지
자유로운설탕

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2017. 1. 30. 19:06 프로그래밍

  파이썬이라는 언어에 대해 공부해야지 하면서 차일 피일 미루던 중, 우연한 기회에 파이썬을 공부하고 싶어하는 지인에게 주기적으로 정리해서 알려주게 되었다. 해당 공부를 진행을 하면서, 정리한 내용들을 블로그에 올리려고 한다. 물론 인터넷에 잘 정리되 있는 좋은 강의는 많지만, 대부분이 이미 글 쓴 분의 잘 정리된 지식을 따라가는 것이기 때문에, 과거 경험에 따르면 시간이 지나면 유효하지 않아서 따라하기 힘든 경우도 있고, 강의를 따라하거나, 확장된 시도를 해보다가 이해되지 않는 에러를 만나서 '망연자실' 상태에서, 공부를 포기하는 경우도 많을 듯하다.

 

  프로그래밍 공부에서 꼭 필요한 건 막다른 상황을 만나 이곳 저곳을 헤메면서 문제를 해결하면서 배우는 시행착오 과정이라고 본다. 그 과정에서 겪게된 문제 해결을 위한 여러가지의 시행착오는 나중에 비슷한 문제를 만났을 때, 부드럽게 문제를 해결하게 해주는 내적인 패턴이 된다.

 

  그래서 많은 파이썬 관련 강의가 있겠지만, 체계적인 문법이나, 좋은 유지보수를 위한 구조같은 측면은 제외하고, 처음 시작부터 구글을 찾아 헤메며 시행 착오를 거치며 원하는 기능을 만들게 되는 과정을 보여주려고 한다. 스스로가 프로그래밍를 잘 한다고 하긴 힘든 실력이라고 생각하지만, 오히려 전문 프로그래머 보다는 필요에 의해 기능의 구현에만 포커스를 두고 언어들을 사용하는 입장이기 때문에 좀 더 초보자 입장에서 설명하기 쉽지 않을까 생각해 본다. 얘기를 해나가면서 가능한 해당 방식이나 코드를 선택하게된 연유를 설명하면서 진행하려 한다.

 

 

0. 왜 파이썬 공부에 구글을 이용하는게 좋은가?

1. 언어를 바라보는 방법. 파이썬을 어떻게 바라봐야 할까?

2. 파이썬 설치와 환경, 버전 선택 하기의 이유.

3. 만들고자 하는 기능을 모르는 조각으로 나눠 조사해 보기

4. 데이터 베이스에서 내용 가져와 출력하기

5. 암호화 모듈을 이용해 암복호화 해보기

6. 퍼즐 조각들을 합쳐보기

7. 엑셀 파일 사용해 보기 -> 부록 : fuction 을 이용해서, 코드 정리해 보기

8. 정규표현식을 왜 사용해야 할까? 언어속의 미니 언어 정규표현식 살펴보기

9. 입력과 결과를 GUI 화면과 연결해 보기

10. Whois API 이용해 보기

11. 웹페이지 호출해 내용 파싱 하기(BeautifulSoup 그리고 한계)

12. 자동화 - 웹 자동화(with Selenium)

13. 자동화 - 윈도우즈 GUI 자동화(with pywinauto)

14. 자동화 - 작업 자동화

15. 수학 라이브러리 살펴보기

16. 그래픽 라이브러리 살펴보기

17. 머신러닝에서의 파이썬의 역활

18. 웹 프로그래밍 - Legacy Web

19. 웹 프로그래밍 - Flask 살펴보기(feat. d3.js)

20. 웹 프로그래밍 - Django 살펴보기

21. 정리 - 이런저런 이야기

 

 

 

 

0. 왜 파이썬 공부에 구글을 이용하는게 좋은가?

 

  일단 구글에서 파이썬에 대해서 검색했을때, 한국 자료와 영문 자료의 비율을 한번 봐보도록 해보자.

1) http://www.google.co.kr/ 로 이동해서 검색어에 '파이썬' 이라고 치고 검색 버튼을 누른다.

--> 약 92만건 정도가 나온다.

 

2) 한국에서 누군가 영문으로 누군가 적을 수도 있다고 가정하고, python 으로 검색하고 오른쪽의 '도구'을 눌러서, 한국어 페이지만 선택해 본다.

--> 47만건 정도가 나온다. 두개를 합치면, 140만 건 정도가 나온다고 보면 된다.

 

3) 그럼 최종으로 영문 페이지에서 검색하게 되면 어떨까. 영문 페이지만 검색하는 방법은 아래 블로그에 있듯이 주소창에서, &lr=lang_en 인자를 추가해 검색하면 된다. (검색인자 조작은 여기선 주제와 별 상관 있는 부분이 아니니 궁금하면 아래 페이지를 보심 된다) 

http://channelofchaos.tistory.com/60

--> 1억 1천만건 정도가 나온다. (러프하게 보면 한글 페이지의 99배 정도이며 하나의 페이지에 파이썬, python 두 가지가 모두 있을 수도 있으니 1.2% 라고 해도 100배 정도라고 가정할 수 있을 듯 하다.) --> 아 근데 이러고 보니 python 이 비단뱀이라는 뜻도 가지고 있다. python program 이라고 찾으면 3천 1백만건 정도 나온다. python snake 는 1천 3백만건 된다. 비단뱀도 무시할 수 없으니 대충 비율대로 8천 만건 정도라고 하자 --;

 

  물론 페이지의 양이 컨텐츠의 질을 보장한다고 할순 없겠지만, 파이썬에 대해 한글로 정리된 페이지만을 찾아보는 것은 수많은 자료 중 약 1~5%만을 살펴보는 것이다. 또 대부분의 기술적 지식은 외국에서 시작되서 국내의 엔지니어 들이 한글로 풀어 소개하기 전까지는 어느정도 텀이 있는 부분도 고려해야 한다. 그래서 찾으려는 검색 결과가 제대로 안나온다면 반드시 적절한 영문으로 변환하여 검색하여 내용을 찾아봐야 한다. 그래서 프로그래밍을 하고 싶어하는 사람은 영어는 열심히 해서 원하는 내용은 훝어서 읽어 볼 수 있는 정도가 되는게 좋다. 그리고 요즘은 유튜브 같은 동영상으로 기술적인 부분을 안내하는 사람도 많기 때문에 듣기도 포함해서 기술적인 부분을 익힐 때 필요한 언어가 되는거 같다. 저도 듣는건 잘 못해서 매번 아쉽다.

 

  또 구글의 장점 중 하나는 사람들이 가장 많이 링크한 자료가 맨 첫 페이지에 나올 가능성이 높다는 거다. 그래서 적절한 검색어로 찾는다면 특히 파이썬 같이 유명한 프로그래밍 분야에서는 1, 2 페이지에서 원하는 힌트를 찾아낼 수 있다. 해당 부분은 추후 실제 예제를 진행 해가면서 느껴 보기로 하자.

 

 

 

1. 언어를 바라보는 방법. 파이썬을 어떻게 바라봐야 할까?

 

  프로그래밍 언어라는 것은 복잡하게 보면 한 없이 복잡하지만, 복잡하지 않게 보면 한없이 단순한 구조이기도 하다.

 

 

  위의 그림을 보자. (각 영역에 보면 사이사이에 확장자가 .py 라는 파이썬 샘플로 만든 파일이 표시되어 있는데, 해당 부분은 2교시 때 실제로 파이썬을 설치해 본다음에 하나씩 실제로 실행해 보도록 하는 시간을 가지려고 한다.)

 

  먼저 입력을 나타내는 1)번 영역을 보자 . GUI, DOS, FILE, Packet... 이 보인다. 프로그램에서 입력이라는 것은 다양한 형태로 이루어진다. 우리가 지금 블로그를 보고 있는 브라우저도 하나의 프로그램이고, 구글의 창에 'python' 이라는 검색어를 넣고, '검색' 버튼을 누른 것도 구글이라는 프로그램에 python 이라는 인자를(물론 다른 여러가지 인자들도 있겠지만) 전달한 것이다. 이렇게 입력이라는 것은 우리가 쓰는 윈도우즈 응용 프로그램 처럼 비주얼한 인터페이스를 제공할 수도 있고(GUI - Graphic User Interface), 도스 화면에서 수행하는 프로그램에 인자를 전달해 줄수도 있고, 새로운 워드 문서를 열듯 워드 문서 파일을 선택할 수도 있고, 카카오톡 같은 프로그램 들도 결국은 우리가 입력한 문장이나, 사진 등이, 통신 패킷에 들어가 프로그램 사이를 돌아다니는 입력으로 된다고 볼수도 있다.

 

 

  2)번 영역은 변수이다. 예를 들어 우리가 머리속에서 덧셈을 하는 과정을 생각해보자. 2+3 을 더한다고 하자. 물론 과정이 너무 빠르게 지나갈 수 있으므로, 우리가 좀더 덧셈을 못하는 다섯살 짜리 아이라고 상상해 보자. 먼저 2라는 글자가 머리에 떠오른다 + 기호가 생각나고 3 이라는 숫자가 생각난다. '두개를 더함 5네' 라고 생각 한다. 우리가 숫자를 생각한 순간에 뭐라고 설명할 순 없지만 머리속의 칠판에 2라는 숫자가 형상화 된다. 컴퓨터는 그런 형상화를 메모리(램, 하드디스크, 레지스터)라는 기억 공간안에 한다. 자 그럼 프로그램 언어에서도 2+3= 이라고 적을 수도 있다. 자 그런데 단순한 숫자의 연산보다는 친구가 빵을 2개 가지고 있고, 내가 3개 가지고 있는 부분을 프로그램에 표시하고 싶다. 어 근데 친구와 내 빵이란 것을 구분하고 싶은데 어떻게 해야 할까. bread_friend 를 친구가 가진빵이라고 하고, bread_me 를 내가 가진 빵이라고 표시하고 거기에다 수량을 넣는 방법이 있다. 그게 프로그램에서 얘기하는 변수라는 개념이다. 친구가 빵을 2개 가지고 있을땐 bread_friend 에 2를 넣음 되고, 3개 가지고 있으면, bread_friend 에 3개를 넣음 된다. 프로그램 언어로 형상화 하면 아래와 같다.

1
2
3
4
5
6
7
bread_friend = 2  (친구가 가진 빵 2개)
 
bread_me = 3  (내가 가진 빵 3개)
 
bread_we = bread_friend + bread_me (우리 빵 = 친구가 가진빵 + 내가 가진 빵)
 
화면에 출력 => bread_we 
cs

 

  약간 억지 상상이 끼었지만 별로 틀리진 않다. 프로그래밍 언어는 항상 사람의 생각을 자연스럽게 기술해 표현하고(다만 영문권에서 주로 만드니 영어 기준으로), 그 표현을 좀더 효율적인 구조로 나타내기 위해서 계속 노력하며 변하고 있기 때문이다. 자 그럼 3)번 데이터 영역도 자연스럽게 설명된다. 프로그램의 어느 공간안에 변수라는 개념을 형상화 시킨 방을 만들고, 그 안에  데이터(숫자, 글자 등등 우리가 프로그램에 넣어 이용하고 싶어하는 값들..)를 넣게 된다. 그리고 그 값들을 '+' 같은 도구 장치(사실 + 기호는 '연산자'라고 공식적인 용어로 얘기하긴 한다) 들을 이용하여, 이리저리 굴려 가공한다.

 

 

  4) 자료구조는 이렇게 생각해 보자, 단순하게 하나의 값을 넣는 변수들을 이리저리 정교하게 조합하다 보면 꽤 귀찮은 상황도 생길수 있다. 예를 들어 아래의 더하기 상황에서 친구가 10명이라고 가정하자. 그럼 변수를 bread_friend1, bread_friend2,... bread_friend10로 10개를 만들어야 할까? 좀더 편하게 많은 친구들을 표시할수 있는 방법이 있음 어떨까? '배열(array)이라는 자료구조가 그런걸 해결하기 위해 옛날에 만들어 졌다(정확하게 여기에서는 리스트-list 이다). bread_friend 라는 공통 인자를 가지고 그 뒤에 (괄호로 쌓여진)숫자로 구분할 수 있게 되었다.

1
2
3
4
bread_friend[1= 2
bread_friend[2= 3
...
bread_friend[10= 4
cs

 

  근데  이것도 10줄이 되어 귀찮으니 조금 더 간단한게 값을 넣을 수 있을까?

1
bread_friend = [23, ....., 4
cs

  위와 같이 하면 알아서 프로그램이 bread_friend[1], bread_friend[2], ... 순으로 알아서 넣어주기도 한다.

 

  그럼 조금 더 나아가 리스트를 더 할때도 bread_friend1 + bread_friend2 +... 하지말고,

'빵 값을 더해라 (친구 빵 리스트)' 이런 식으로 명령을 보낼 수도 있을까? ㅇㅇ 당연히 가능하다. 아래 그러한 예제를 설명한 글에서 실제 구현 예를 참조하자.

http://mwultong.blogspot.com/2007/02/python-list-array-sum-average-mean.html

 

  자 그럼 여짓것 설명한 내용을 총괄해서 5명의 친구의 빵을 더해 화면에 출력하는 프로그램은 아래와 같다. (2교시 때 파이썬 설치하고 실행하는 법을 알게 되면, 예제 내용을 bread.py 파일로 만들어 실행해 5개의 값을 더한 결과인 20이 출력되는 것을 보려한다)

1
2
3
4
5
breadfriend = [23456]
 
breadfriend_sum = sum(breadfriend, 0.0)
 
print(breadfriend_sum);
cs

 

  어 근데 가운데 줄의 코드가 왠지 받아들이기 어색하다. 굳이 sum 이라는 기능안에 넣는 식으로 하지 말고, breadfriend.sum() 이렇게 하면 계산해 주면 좀 더 직관적이지 않을까? 라고 생각이 든다. 구글을 찾아보니, 파이썬 자체는 그런 문법 방식을 지원하지 않는거 같지만, 나중에 아마 머신러닝쪽 얘기할때 살짝 언급하게될 numpy 라는 수학 모듈(모듈은 나중에 10번 영역 에서 설명한다)을 사용하면 그렇게  호출할 수도 있는거 같다. 밑의 블로그를 참고하자~

http://yceffort.com/archives/298

 

  자 그럼 단순한 변수에서 자료구조가 필요한 이유를 대충은 정당화 한 것 같으니, 아래 링크의 글을 한번 훝어 읽으라고 소개하는 것으로 자료구조 파트 설명은 마친다. 파이썬의 자료구조는 어떤 것이 있는지만 알고 필요할때 가져다 써야 머리가 덜 아플듯 하다. (단 문법은 대충 넘어가도 어떤 경우 사용하는게 좋은지에 대한 개념은 확실히 짚는게 구조적인 기억력에 도움이 된다,)

http://felixblog.tistory.com/54

 

 

  5) 프로그래밍 언어책을 보다보면 뭔가 약간 확 와닿지 않는 복잡함을 주는 요소들이 있다.  클래스, 인터페이스, 델리게이트(위임)... 이런걸 막 섞어서 효율적인 구조라고 소개하는 디자인 패턴이라고 하는 주제를 설명하는 책도 있고 말이다. 그 중의 가장 주범인 5) 클래스 - 객체 지향 언어라는 말을 만들어 내게 된 가장 중심적인 개념이다. 유투브의 디자인 패턴 설명하던 분은 설계도라고 설명 했는데, 약간 설계도보단 좀더 덜 적합한거 같지만, DNA 구조 라고 보면 어떨까 싶다. 사람이나 생물들이 해당 모양으로 성장하는데에 대한 정보는 DNA 구조에 담겨있고, 그 정보들이 구현되고 나면 사람(뭐 프로그램에서 말하는 인스턴스나, 객체)이 된다고 봐도 될듯하다. RPG 게임을 하면서 마법사를 선택한 순간, 내가 선택한 "설탕" 캐릭은 마법사 클래스의 DNA를 물려받아, 체력이 약하고, 마나 재생속도는 빵빵하고, 스킬 트리는 전격 스킬 쪽을 밟게되는 특성을 지닌 객체(캐릭터)로 만들어 지는 거라고 생각해보자. 이런 부분을 상상하게 되면 6)번 객체(Object) 까지 슬쩍 끼워 설명하게 된 듯하고, 유투브에서 아래의 강의나 '클래스 객체 인스턴스' 라고 검색해서 열심히 설명해 놓은 동영상 강의들을 보자. 고백하지만 명확히 잘 모르기도 하고 요 부분은 이번 강의에서는 곁가지 요소들이다. 

https://www.youtube.com/watch?v=8B2Wxks5Sig

 

  9)번 메쏘드는 마법사로 얘기하면 버프를 걸거나, 파이어볼 스킬을 쏘거나 하는 액션이 구현된 부분이고, 나중에 설명한 7) 함수(function) 가 객체 내부에 구현된 버전이라고 봐도 될듯 하다. 이 부분은 별로 자신없는 부분이니 언젠가 객체 지향과 패턴 개념에 대해 쉽게 정리해 전달 할수 있는 수준이 되길 기대하며 요 정도로 얼버무리려 한다.

 

 

  7) 번은 함수(fuction) 또는 서브루틴(sub-routine)이라고 하는 부분이다(언어마다 표현하는 말이 좀 다르다) 한글로 해석하면 각각 '기능', '루틴의 밑(또는 부수적으로)에 있는 로직' 이정도 이다. '루틴'이라는 것은 route 에서 나온 말로  '특정한 길을 따라 가는 행위' 같은 것이라고 볼수 있을 거다. 이 두 가지의 용어가 비슷한 개념을 설명하기 위해서 만들어 낸 말이라는 것을 이해해보자. (뭐 서브루틴은 인자가 없고, 함수는 인자가 있다고 구분 될 수도 있지만 그것은 무시하자). 함수를 얘기할때 붙어다니는 용어들은 '재사용', '중복코드 제거' 라는 말이다. 

 

  아까 여러명의 친구를 간단히 표시하기 위해 배열을 사용했 듯이, 코드 중에 자꾸 반복되어 나오는 부분을 묶어서 다른 구역 에다 격리해 옮겨놓고, 메인 코드에서 반복하여 호출해서 사용하는 개념이다. 회사로 얘기하면 각 팀에 복사기를 하나씩 놓았던 회사가 하나의 복사기만 OA 공간에 놓고 사람들이 같이 사용하게 하는 것도 일종의 함수개념 일 수 있다. 게임회사에서 개발자 풀을 만들어 놓고 각 게임별 그룹이 그때 그때 요청해서 원하는 리소스를 얻을 수 있게 하는 것도 개발자 풀이라는 함수를 재사용 하는 거라고 볼수 있다. 복사기 문제로 돌아가서 그렇게 되면 각 팀별 복사기 수십개를 신경 쓰지 않아도 되고, 최신형 복사기로 변경하고 싶을 때에도 공용인 1개의 복사기만 변경시키면 되기 때문에 유지보수가 쉬워진다. 대신 많이 써서 고장이 자주 나지 않겠냐고 할수도 있겠지만, 그건 현실의 사물 얘기고 코드상의 로직은 일반적으로 많이 호출해 쓴다고 고장이 나진 않을테니 괜찮다. 그래서 이런 공용 기능인 함수는 요청하는 쪽에서 요청을 하면서 (복사하길 원하는 자료 등)원하는 부분들을 얘기해야 하고(요것이 함수의 입력 인자이다), 자료가 복사되면 나온 결과물을 찾아가야 한다. 물론 복합기에서 팩스 보내기 같은걸 하는 경우는 실제 찾아갈 결과물은 없을 수 있다. 요게 함수의 리턴값으로 마찬가지로 값이 있을 수도 없을 수도 있다).

 

 

  8) 제어 로직은 변수나 자료구조, 함수등에 모두 적용할 수 있는 요소다. 영어의 단어 뜻과 사용법이 거의 일치 한다.

for (리스트의 첫번째~마지막 까지 인자를 찾는 동안),

while(리스트의 마지막 인자가 될때 까지),

case(리스트의 인자가 내가 지정한 조건들에 맞을 경우),

if(리스트의 세번째 인자가 10일 경우)와 같이 적용되거나,

또는 함수에 적용되어 if(함수의 리턴값이 1일 경우) 같이 원하는 조건을 넣는 것이라고 보면 될 듯 하다.

 

 

  10) 라이브러리, 모듈은 남이 미리 만들어 놓은 기능을 사용하는 것이라고 본다. 일반적인 사람들이 만드는 프로그래밍 이라는 것은 어찌보면 결국은 남이 만들어 놓은 기능 등을 추상적으로 꾸미는 일이라고 볼수도 있을 것 같다. 파이썬에도 GUI, 엑셀, web, 통계, 머신러닝, 이미지. text 처리 등등 세계의 수많은 프로그래머 들이 만들어 놓은 모듈이 있다.

 

  예를 들어 엑셀을 다루는 기능을 만든다고 하자. 만약 우리가 엑셀 파일의 구조까지 분석하여, 하나하나 다 약속된 구조대로 값을 불러오거나 저장하는 로직을 만든다고 하면 아마 시간도 오래 걸리겠지만, 엑셀 구조를 분석할 능력이 없어 구현 자체를 못할 수도 있다. 그런데 공개된 엑셀 모듈을 사용하면 아래와 같이 간단하게 엑셀파일을 만들수 있다.

1
2
3
4
5
6
7
엑셀 모듈을 가져온다.
 
엑셀 모듈안에 있는 클래스를 이용해서 엑셀 객체를 하나 만든다.  
 
엑셀 객체 안에 시트를 만들고, A1 열에 'hello' 라고 넣는다.
 
메모리의 엑셀 객체를 test.xls 라는 문서로 디스크에 저장한다.
cs

(해당 코드의 대한 시연은 7교시때 진행 예정이다.)

 

  근데 왜 굳이 라이브러리나 모듈을 굳이 프로그램에 import(가져오기) 시켜야 할까? 모든 기능을 다 한꺼번에 가져오면 프로그래밍 편집 및 실행 환경이 아주 무거워 지기 때문에, 필요한 순간에만 명시적으로 포함 시켜 만들면 선택한 라이브러리들만 내가 만든 프로그램과 같이 메모리로 올라가 실행되어 효율적으로 메모리 공간들을 사용할 수 있기 때문이다(뭔가 다른 숨은 설계적 이유도 많을 듯해서 별로 설명에 자신은 없긴하다^^).

 

  여튼 특히 파이썬 같은 사람들이 많이 사용하는 프로그램 언어를 사용할때 필요한 기능이 있다면, 구글을 잘 찾아보자. 사람들이 많이 사용하는 기능이라면, 이미 모듈로 존재하고 있을 것이다.(게다가 소스까지 공개해서 무료로...) 물론 해당 모듈을 그대로 사용하거나, 소스를 수정해서 좀더 좋게 개선해 사용하거나, 내 프로그램에는 적합하지 않아 새로 만들어 사용하는 것은 개발하는 사람 맘이긴 하지만, 일반적으로 유지보수가 계속 되고, 검증된 모듈이 있다면 그 것을 사용하는 것이 현명한 듯 싶다.

 

  요즘은 프로그래밍 환경도 SNS 처럼 연결 지향적인 환경이 되어가고 있는 듯하다. 좋은 연결고리를 많이 찾는 센스를 가진 사람이 쉽게 문제의 해결방법을 찾을 수 있는 것 같다. 또 다른 측면으로 얘기하면 결국 자신의 똑똑해 보이는 결과물들의 많은 부분이 수많은 사람들이 만든 기존 코드들의 도움으로 지지된 다는 것을 인지함으로서, 거인의 어깨위에 편하게 서 있는 자신을 느끼게 되어, 스스로에 대해 겸손해지고, 현재의 자신에 멈추지 않고 계속 노력할 수 있게 될 것 같다.

http://legacy.www.hani.co.kr/section-009100003/2004/11/009100003200411261636092.html

 

 

  11) 출력. 출력은 입력과 같은 형태의 윈도우 프로그램 화면, 도스화면, 파일, 이미지, 패킷등으로 자유롭게 표현될 수 있다. 이는 이러한 출력이 다른 프로그램의 입력이 될수도 있다는 것을 의미하기도 한다. 리눅스의 명령어 들이 파이프로 연결되어 출력을 다른 명령어의 입력으로 전해 주듯, 요즘의 많은 프로그램들은 자신의 출력을 다른 프로그램에서 사용하는 것을 염두해 두고 만들어 지는 것 같기도 하다.

 

  마지막으로 아주 초보 분은 할수 없지만 어느정도 코드에 익숙한 사람들도 다른 사람이 만든 소스들을 보다보면 이해가 안되게 복잡한 코드를 만나서 자신의 지적 능력에 좌절을 가질 수도 있을듯 싶다. 그런데 개인적으로 생각하기에 어려워 보이는 코드를 만나는 것은(물론 내부에 담겨 있는 도메인 지식이 부족한 경우나, 패턴을 이해못해 그런건 예외지만) 그 코드를 만든 사람이 문제를 명확히 이해하지 못하거나 타인을 생각하는 객관적인 코딩을 하지 못한 결과물이라고 생각한다.. 해답을 찾아 구글을 돌아다니다가 이해 못할 어려운 코드와 설명을 만나면 자격지심을 가지지 말고 살포시 무시하는 것도 정신건강에 좋다. 

 

  그럼 파이썬이라는 언어를 어떻게 바라보는냐 하는 부분에 대한 설명을 마치고, 다음 시간에는 강의를 위해 파이썬의 특정 버전과 sql 등을 선택하게된 사유를 설명하고, 실제 파이썬을 설치하고 위의 각 언어 구조들의 샘플 파일들을 실제 시연 하는 시간을 가지려고 한다.

 

 

 

2017.2.5 by 자유로운설탕
cs

 

 

 

 

 

posted by 자유로운설탕