01 Getting Start Python
1. Python 언어의 탄생
1) Python 언어의 역사
Python의 역사
* 1991년 네덜란드인 Guido van Rossum이 "Monty Python's Flying Circus"라는 TV프로그램 이름을 따서 만들어진 `고급 프로그래밍 언어`
* 1980년대 말 고안
* 1989년 12월부터 구현 시작
Python 언어
- 동적 타이핑(Dynamically Typed)
객체 지향과 실행 시간에 자료 검사
- 인터프리터
독립적 플랫폼이면서 소스코드를 중간 언어로 변환 후 바로 실행
- 오픈소스 소프트웨어(Open Source Software, OSS)
Python software재단이 관리하는 개방형 공동체 기반 개발 모델
Python 버전
- 파이썬 2.0
- 2000년 10월 16일에 배포된 Garbage Collector에 탑재를 하고
유니코드를 지원한 오픈소스
- 2020년 1월 1일 Python 2버전 계열의 지원이 모두 종료됨
- 2000년 10월 16일에 배포된 Garbage Collector에 탑재를 하고
- 파이썬 3
- 2008년 출시
- 내장 자료형의
내부적인 변화
,표준 라이브러리 재배치
- 2015년부터 파이썬 3.5.1버전, 이후로
업데이트되어 제공
Python Interpreter의 종류
- Python
C언어
구현cPython(오리지널)
표기- cPython에서 시스템을 없앰:
Stackless Python
- IronPython
C#
으로 구현된닷넷프레임워크
에서 동작
- Jython
자바
로 구현된JVM
에서 실행
- PyPy
Pure Python
으로 구현된 Python처리 시스템JIT
(Just Time Complier)에 의해 cPython보다고속으로 동작
하는 경우가 많음
- MicroPython
- 임베디드 환경에서 동작하는 것을 목표로 한 Python의 서브센스 구현
- BRYTHON
- JavaScript를 사용한 Python처리 시스템에서
브라우저에 Python코드
를 실행할 수 있도록 구현
- JavaScript를 사용한 Python처리 시스템에서
2) Python 언어의 특징
Python 언어의 특징
- 코드의 단순성과 표준성
- Python의 다른 객체 지향 언어를 사용하는 코드의 구문보다
간결하고 간단하며 규칙적임
서술문들은 줄
로 끝나고블록 구조는 들여쓰기 형태
로 나타남- EX) “Hello world”를 출력하는 구문 만들기
- Test.java
public class Test{ public static void main(String[] args){ System.out.println("Hello world") } }
- Test.py
print("Hello world")
- Test.java
- Python의 다른 객체 지향 언어를 사용하는 코드의 구문보다
- 높은 이식성
- Python은 플랫폼이 독립적이면서 모든 OS환경에 연동됨
- 객체 지향 언어
- Python은 클래스 추상화와 함수형 추상화를 제공하는
객체 지향 언어
이자함수형 프로그래밍 언어
로코루틴(Coroutineu)을 지원하는 언어
- Python은 클래스 추상화와 함수형 추상화를 제공하는
-
확장 가능한 라이브러리
- Python은
방대한 표준 라이브러리
를 제공함 - 정규 표현식, 자동 문서 생성, 유닛 테스트 GUI등 Python패키지들을
지속적으로 업데이트
하며Python Package Index
제공
- Python은
Python의 단점
- GIL 문제
현재 cPython의 Interpreter에서 동시에 오직 하나의 스레드만 동작하도록 허용하면서 생기는 문제
- 다중 스레드(Multi-Thread)의 성능 저하
cPython에서는 다중 스레드보다 다중 프로세스의 사용 권장 다중 프로세싱 패키지를 제공해 스레드와 비슷하게 구현할 수 있도록 지원
- 모바일 플랫폼 라이브러리가 없음
Python 프레임 워크의 5가지 분야
- 웹사이트 제작
- Django, Flask, FastAPI등으로 웹사이트와 서비스 구축 가능
EX) 인스타그램, 유튜브
- 기존 Python으로 구축된 시스템 위에 블로그나 SNS기능을 추가한 경우
다른 언어가 아닌 Python을 그대로 사용할 수 있음
- Django, Flask, FastAPI등으로 웹사이트와 서비스 구축 가능
- 데이터 수집
크롤링(Crawling)
과스크래핑(Scraping)라이브러리
사용시 외부에서 텍스트와 이미지 데이터를 효율적으로 수집하고 저장할 수 있음- 정기적으로 열람하고 있는 사이트에 업데이트 정보 및 가격 등의 데이터 수집 가능
- 수집된 데이터를 정리한 후 CMS프레임 워크와 조합하면 정보 제공 사이트의 구축 가능
- EX) SNS등 온라인 트렌드 정보 수집
- EX) 주식, 환율 트레이딩을 하는 클라이언트를 위한 정보 사이트
- 인공지능(AI)
- 최근 Python이 특히 주목받고 있는 분야
- 수집된 데이터를 바탕으로 자발적으로 학습하는 로봇은 풍부한 AI라이브러리를 갖춘 Python을 사용해서 효율적으로 만들 수 있음
- 오픈 소스 기계 학습 라이브러리 : 탠서플로우(TensorFlow), 파이토치(PyTorch)
- 데이터 분석
- Python은 높은 수치 계산 능력을 가짐
- 대량의 데이터베이스의 데이터를 계산 및 읽기 쉬운 테이블로 적재 가능
- 빅데이터 분석을 통해 데이터 그래프나 분포도 등 다양한 그래프 생성 가능
- 블록체인
- HTTP 요청이나 해시 함수를 사용할 수 있음
적은 개발 인원으로 안정된 블록체인 시스템을 단기간에 개발 할 수 있음
- HTTP 요청이나 해시 함수를 사용할 수 있음
Python을 학습해야 하는 이유
- Dynamic Language
- Python은 문법이 간결한 프로그램을 작성할 수 있고 생산성이 좋으며 배우기 쉬움
- 초대형 프로젝트를 Dynamic Language로 구현하거나 쉽고 활용하기 편리한 어플리케이션, 웹 등의 구축하기를 원할 경우 활용
- 데이터 처리 시스템 라이브러리 및 수학적 연산을 가짐
- 데이터의 수집, 해석과 그것을 활용한 AI개발 등에 적합함
- 데이터의 관리 및 적재가 용이함
- Crowd data Storage Servicer, SNS개발, 블록체인에도 유용한 라이브러리를 제공하고 있는 언어
2. Python 구문과 실행
1) Python 문법 특징
Python 문법 특징
- 간결하고 가독성이 좋음
- 코드 블록을 들여쓰기로 구분하여 소스 코드가 한눈에 들어옴
- 공동작업이 원활하게 구현되는 특징 ```python classMyClass: def_init_(self.value): self.value=value print(“Class is Created! Value = “,value)
```
- 동적(Dynamic)임
- 입력한 값을 바로 출력 구문으로 호출해서 사용
- 동적인 형(dynamic Typing)과 동적인 해결(Dynamic resolution of names)사용
- 프로그램의 크기를 크게 줄여주면서 테스트에 용이함
>>>a=input("a:") a:100 >>>print(a) 100
- 유니코드 제공
- 문자열이 모두 유니코드를 나타냄
- 한글, 한자 등의 언어 표현을 자유롭게 출력함(값을 대입)
>>>print('안녕?') 안녕?
- 세미콜론(;)과 역슬래쉬()
- 쉘 : 코드작성
- 엔터 : 다음 명령으로 이동하거나 들여쓰기
- 콜론(:) : 문장 구분
- 세미콜론(;) : 명령을 끝에 붙이지 않으며, 굳이 명령의 끝에 붙여도 오류가 나진 않음
- 예외적으로 한 줄로 여러 개의 명령을 선언할 경우 : 세미콜론으로 구분함
- 역슬래쉬() : 문장이 길어질 때 다음 줄까지 구문을 잇겠다는 의미
- 아래 예시코드의 결과는 동일
- 예시코드 1
>>> su = 10 >>> if su==10:a=1;b=2;c=3
- 예시코드 2
>>> if su=10 a=1 b=1 c=1
- 예시코드 1
2) Python프로그램 설치
- Python 파일 설치
- Jupyter Notebook을 Python명령을 통해 설치 후 실행
- pip 명령어 + install 옵션 + jupyter 입력 > Jupyter 프로그램이 설치됨
pip install jupyter
- Jupyter nodebook 실행
jupyter notebook
- 주의사항
Jupyter notebook 명령어 수행한 후 명령 프롬프트 창을 열어놓고 서버를 연동해야 함
- 주의사항