160801: 97회차
Programming
2016. 8. 1. 10:08
종료하기 전 티스토리 네이버 로그아웃 할 것
1. 툴
동일
추가시:
2. 폴더
동일
추가시:
3. 사용할 사이트
동일
추가시:
4. 공부하는 것
파이썬 교육 시작
[01] Python 프로그래밍 시작-유래,특징,활용,장점
[01]Python 프로그래밍
1. Python의 유래
1) Python의 사전적 의미는 독이 없는 뱀으로 먹이를 몸으로 감아서 압사시키는
큰 뱀, 또는 그리스 신화에 나오는 악마
2) Python 의 유래
. 프로그래밍 언어로서 Python 이름의 유래는 1970년대에 영국 BBC에서 방영한
"Monty Python's Flying Circus" 방영 프로그램에서 유래되었다.
이 프로그램은 매우 어색하고 이상한 행동을 보이는 사람들을 쇼형태로 방영하여
많은 인기를 누렸다.
. 이 언어를 만든 Guido van Rossum이 이 프로그램의 대단한 팬이었기 때문이었다.
. 1989년 12월 크리스마스 휴가를 보내고 있던 Guido는 휴가기간 동안 무엇인가
재미있게 할 수 있는 무언가를 찾고 있었다.
. 연휴라서 연구실이 닫힌 상황에서 집에서 컴퓨터를 가지고 예전부터 생각하고 있었던
인터프리터(interpreter)를 만들어 보기로 결심하였다.
. 즉, Guido가 무료한 한때를 보내기 위하여 만들기 시작했던 언어가 지금 많은
사람들이 사용하는 Python 언어가 되었다.
3) Python 의 출발
. 파이썬의 기반은 80년대 초반에 Guido가 동료들과 함께 개발을 하였던 ABC라는
언어이다.
. 80년대에 ABC라는 언어는 최고의 교육용 언어로 알려졌었고 전문 프로그래머가
아닌 사람이 배우기 편하게 만들어진 아주 훌륭한 언어였다.
. 그럼에도 불구하고 전문 프로그래머들에게는 거의 받아 들여지지도 않았고 잘
사용되지도 않았다.
. 이는 프로그래밍이 대중화가 많이 되지 않은 상황에서 전문 프로그래머들에게 외면
받았을때에 나올수 있는 결과라고 볼수 있다.
. Guido는 파이썬으로 실제 문제를 더욱더 쉽게 해결할 수있도록 설계하였으며 C언어나
유닉스 쉘을 대신해서 좀 더 편하게 사용할 수 있는 언어를 개발하는 데 초점을
맞추었다.
4) Python 의 필요성
. 생산성이 높기 때문에 먼저 개발하고 나서 성능을 개선할 수 있다.
. 개발을 먼저 할 시 장점 : 협업 시 비교하여 성능을 높이기 용이함
2. Python 의 특징
. 대화 기능의 인터프리터 언어 -> 마치 컴퓨터와 개발자가 대화하는듯한 느낌
. 동적인 데이터 타입 결정 지원 - 데이터 타입이 정해져 있지 않은 것 처럼 선언 가능
ex) - 여기서는 제대로 안 되어있는데 들여쓰기가 중요하다.
def add(a,b): - 뭐가 들어 왔는가에 따라서 데이터 타입이 변환됨
return a+b
print add(1,2)
print add('abc', 'def') - "와 '의 구분이 명확하지 않음 - 하나 써도 문자열 두개 써도 문자열
print add([1, 2, 3], [4, 5, 6])
결과---------------------------------------
3
abcdef
[1, 2, 3, 4, 5, 6]
설명---------------------------------------
def → add 함수를 만드는 키워드 ?
print → add 함수 수행 값을 반환한 것을 출력하는 것 ?
문자열을 더하면 문자들이 합쳐짐 ?
리스트 + 리스트 = 하나의 리스트 ?
함수의 a와 b는 타입이 정해져 있지 않음. ?
타입은 실제로 값이 변수에 할당되는 순간에 정해짐
-----------------------------------------
. 플랫폼 독립적 언어
- 윈도우에서 개발한 파이썬 소스코드를 맥과 리눅스에서 수행 가능
- C언어의 경우 소스코드를 컴파일을 다시 진행해야 함
. 개발 기간 단축에 초점을 둔 언어
. 간단하고 쉬운 문법
. 고수준의 내장 객체 자료형 제공
- a 변수 → 리스트
- 리스트 : 서로 다른 객체들을 원소로 갖고, 순서가 부여된 자료구조형
- 리스트 : 첫 번째, 두 번째 인덱싱을 할 수 있음
- 자바로 치면 generic 타입 리스트 선언한 것처럼 사용할 수 있는 자료형.
ex)
a=[12, 'abcde', 4+2j, [3,4,5]]
a.append('add')
print a;
결과 ---------------------------------------
[12, 'abcde', (4+2j), [3, 4, 5], 'add']
. 메모리 자동 관리
. 쉬운 유지 보수
. 많은 수의 라이브러리 제공
. 짧아지는 코드
- C언어 또는 Java → 100라인, 파이썬 → 5~10라인
- 코딩시 필요한 모듈 끌어와 사용 가능
. 높은 확장성
3. Python의 활용처
. 시스템 유틸리티
- 시스템 유틸리티: OS가 지원해야 하는 명령어
- 리눅스 → ls, DOS → dir, copy, move
. GUI
- wxpython, tkinter
. 게임 프로그래밍
- 파이썬 게임엔진: PyOpenGL PySDL PyGame Kivy PyOgre Panda3D
Cocos2D PySoy
. 웹 프로그래밍
- django 프레임워크
. 수치 프로그래밍
- numpy 및 pandas 모듈
- networks 모듈
. 데이터베이스 프로그래밍
. 기타
- 참고: http://mulgu.kr/73
4. Python 의 장점
. Guido가 생각했던 Python 문법적 특징은 들여쓰기를 철저하게 지키도록 언어를
설계했다는 점이다.
- 파이썬은 들여쓰기를 안 할 경우 error 발생 → 들여쓰기 강제
. 이는 코드의 가독성을 현격히 높여준다.
. C 언어에서처럼 {} 등의 괄호를 넣지 않기 때문에 프로그램을 좀더 깔끔하게
만들어준다.
. 파이썬 코드는 재사용하기가 쉽다.
. 코드의 분석이 쉽기 때문에 다른 사람이 작성한 코드를 받아서 작업하는 사람들이 훨씬
더 작업을 편하게 해준다.
[02] Python 프로그래밍 시작-스크립트 언어의 이해
[01]스크립트 언어의 이해
1. 스크립트 언어란 무엇인가? - 인터프리터 형식으로 해석 / 실행이 될 수 있는 언어
. 스크립트(scripts)의 사전적 의미:
- 연극의 대사등이 적혀 있는 스크립트에서 유래
. Script Language의 wikipedia 정의
(http://en.wikipedia.org/wiki/Scripting_language) :
a programming language that supports scripts, programs written
for a special run-time environment that can interpret
(rather than compile) and automate the execution of tasks
that could alternatively be executed one-by-one by
a human operator
. 소스코드 = 스크립트
. 연기자가 스크립트를 보고 연기 = 컴퓨터가 스크립트를 읽어 수행
. a special run-time environment = 수행시간 환경
. 해석과 수행을 함
. 라인 단위로 해석하여 수행함
2. 컴파일 언어와 스크립트 언어와의 비교
. 컴파일(Compile) 방식의 언어에 의해 작성되는 응용 프로그램은 컴파일러에 의해
기계어로 번역된 채로 실행되기 때문에, 수정이 빈번하게 발생할 경우에는 수정 후
다시 컴파일을 해야 함.
. 덩치가 큰 프로그램은 컴파일 시간이 꽤 길다. 즉, 간단한 수정에도 오랜 기간의
컴파일 시간이 요구된다.
- 리눅스나 맥은 .exe. 파일이 아니어도 실행파일로 존재 가능
- 컴파일러 언어 단점 : 자원을 많이 요구하고 시간 소요됨
- special run-time environment 덕분에 단계가 많이 줄어듦
- special run-time environment = 인터프리터
. 반면에 수정이 빈번하게 발생하는 경우에는 소스 코드를 한 줄 한 줄 읽어 바로 바로
실행하는 인터프리터 방식이 상당히 유리하다.
. 스크립트 소스코드를 컴파일 방식에 의해 중간 코드(Bytecode)로 우선 만들고,
이를 다시 인터프리터 방식으로 해석하여 수행하는 방법도 종종 활용된다.
- 파이썬의 경우 두 방법 모두 활용 가능
- 바이트 코드(읽을 수 있는 언어) ≠ 기계어 (이진수, 0, 1)
3. 스크립트 언어의 장점 및 단점
. 장점
- 개발 시간이 단축된다.
- 소스 코드 수정이 빠르고 간단하게 이루어진다.
- 소스코드의 수정을 많이 요구될경우 → 스크립트 언어가 더 용이
. 단점
- 중간 코드를 만드는 것은 간단하지만 그것을 실제로 실행시키는
것은 많은 작업을 필요로 한다.
- 실행 시간이 오래 걸린다.
. special run-time environment = Java 가상머신
. Java → 컴파일 언어가 기본이지만 인터프리터 사용도 혼용
. 실행시간을 좀 더 단축하고자 수치분석이 많이 요구됨
4. 대표적인 스크립트 언어
. 브라우저에서 웹페이지를 동적으로 만들어주는 Javascript
. Actionscript : flash 개발시 사용
. Perl : 요즘에 많이 사용 안함
. PHP : 동적인 웹 페이지 구현 시 많이 사용
. Lua, Ruby → 최근에 개발된 스크립트 언어
[03] Python 개발 환경 구축 - Canopy
[01] Python 개발 환경 구축
1. Python 전용 통합개발환경(IDE) 사용
. Enthought Canopy
- 별도의 파이썬 설치 없이 아래 통합개발환경을 사용하면 자동으로 파이썬이 설치됨
- CANOPY EXPRESS (Free) 다운로드 사이트:
https://www.enthought.com/products/canopy/
. 설치후 실행화면
. 설치후 실행화면
. Python 실행 - Enthought Canopy 직접 활용
- 커맨드 창 (터미널) - ipython 명령어 이용
- python 이나 ipython 명령어 빠져나오는 방법 - Ctrl + Z
- python 이나 ipython 명령어 빠져나오는 방법 - Ctrl + Z
[04] Python 개발 환경 구축 - Eclipse
[01] Python 개발 환경 구축
1. Python 코딩 환경 구축
1) Enthought Canopy 설치
2) 이클립스 설치
3) PyDev 플러그인 설치
2. Eclipse 사용
1) 파이썬 설치
- 파이썬 다운로드 사이트: https://www.python.org/downloads/
- 본 강좌에서는 파이썬 2.7.x 버전 사용
- Default 선택으로 설치합니다.
- 캐노피를 먼저 설치하면 이거 설치 안 해도 됨
2) 이클립스에서 Python 설치
1. Help-> Eclipse Marketplace
- python 검색
- PyDev 선택후 설치
- 설치 중간에 확인창 뜨면 체크하고 계속 진행
2. Eclipse restart -> Window -> Open perspectiv -> PyDev 선택
3. Window -> Preference -> PyDev -> Interpreter-Python
- Python interpreters에 설정 추가
- Auto Config를 이용하여 자동으로 추가
- 시간이 소요된다.
4. File -> New -> Python 프로젝트 생성- 시간이 소요된다.
PythonTest 프로젝트 생성
5. PythonTest -> test01폴더생성 -> test.py 파일 생성
coding ---------------------------------------------------
print 4+5
print "Hello World!"
결과 ------------------------------------------------------
9
Hello World!
coding -----------------------------------------------------
# -*- coding:utf-8 -*-
print "홍길동 안녕하세요!" # 한글 주석
결과 --------------------------------------------------------
- 한글깨짐 방지 # -*- coding:utf-8 -*-결과 --------------------------------------------------------
- # 주석
- Python 버전알기
coding -------------------------------------------------------
import sys
print sys.version
print sys.version_info
- Python 변수의 Type의 동적변화
coding --------------------------------------------------------
# -*- coding:utf-8 -*-
print 'Hello'
print "Hi there!"
a = 'My name is '
b = '홍길동'
print a + b
결과 -------------------------------------------------------------
- execfile('/python/workspace/Pythontest/test01/test01.py') 결과 -------------------------------------------------------------
Hello
Hi there!
My name is 홍길동
- 커맨트 창에서 실행하기
- prmonth() : 출력메소드
coding test01.py ---------------------------------------------------------------
- prmonth() : 출력메소드
coding test01.py ---------------------------------------------------------------
import calendar
calendar.prmonth(2014, 11)
calendar.prmonth(2014, 11)
-----------------------------------------------------------------------------------
- 커맨트 창 (터미널 창)에서 해당 폴더로 이동 후 다음 명령어 수행
python test01.py
- eclipse의 대화모드에서 파일 실행
- eclipse의 대화모드에서 파일 실행
November 2014
Mo Tu We Th Fr Sa Su
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
5. 수업
진도:
hw:
6. 할것
'Programming' 카테고리의 다른 글
160803: 99회차 (0) | 2016.08.03 |
---|---|
160802: 98회차 (0) | 2016.08.03 |
160729: 96회차 (0) | 2016.07.29 |
160728: 95회차 (0) | 2016.07.28 |
160727: 94회차 (0) | 2016.07.27 |