Introducing Python (처음 시작하는 파이썬)
Chapter 1. 파이(Py) 맛보기
* Python 또한, C/C++와 같이, Offset값은 0부터 시작한다.
1.1 파이썬 활용
* Python을 활용하기에 적합한 컴퓨팅 환경
- 터미널 창의 커맨드 라인
- Web을 포함한 GUI
- 서버/클라이언트 Web
- 대용량 데이터 처리를 지원하는 백엔드 서버
- 클라우드 (Third Party에 의해 관리되는 서버)
- 모바일 디바이스
- 임베디드 디바이스
1.2 파이썬과 다른 언어
Shell Program
- 터미널이나 터미널 창을 사용하여 입력값을 읽고 프로그램을 실행하여 그 결과를 즉각적으로 보여주는 프로그램을 의미한다.
- Windows 계열의 Shell을 "cmd"라고 부른다. (cmd는 .bat 확장자를 가진 batch 파일을 실행한다.)
- UNIX 계열(Linux, MAC OS X 등)에서는 bash, sh와 같은 Shell Program이 많이 사용된다.
Shell Script
- 단순한 Logic과 Wildcard 등의 문자로 작성된 비교적 간단한 Shell Program 코드를 의미한다.
- 몇 백 줄의 긴 코드로 구성된 Shell Script는 확장성이 떨어진다.
- Shell Script는 다른 프로그래밍 언어에 대비하여 훨씬 느린 속도를 보인다.
Static Language(정적 언어)
- 컴퓨터에 대한 저수준의 세부사항을 프로그래머가 지정해야 하는 언어이다.
- 변수가 자신의 타입을 변경할 수 없기 때문에 "정적 변수"라 명명되었다.
Dynamic Language(동적 언어) = Script Language (스크립트 언어)
- 변수 타입을 프로그래머가 선언할 필요가 없는 언어이다.
- 코드를 컴파일러 대신, 인터프리터가 프로그램으로 해석한다.
- 일반적으로, 정적 언어보다 실행 속도가 느리지만 계속해서 개선되어 가고 있다.
- 전통적으로, 정적 언어로 기술된 프로그램에 데이터를 공급하기 위한 Glue Code(글루 코드)*을 개발하는 데 사용되었다.
* Glue Code : 프로그램을 위한 프로그램으로, 짧은 스크립트와 같은 형태의 프로그램이다.
Perl
- 다용도의 동적 언어로 강력하고 광범위한 Library를 보유한 프로그래밍 언어이다.
- 구문 자체의 이질감으로 인해 Python, Ruby에 비해 인기가 떨어지고 있다.
Ruby
- Perl의 몇몇 특징을 계승한 프로그래밍 언어이다.
- Web Framework인 Ruby on Rails로 인해 큰 인기를 얻게 되었다.
- Ruby는 Python과 같은 분야에서 많이 사용되며, 사용자는 Library와 프로그래밍 취향에 따라 Python 혹은 Ruby를 선택하여 사용한다.
PHP
- HTML과 쉽게 결합되어 Web 프로그래밍에서 아주 인기가 많은 언어이다.
1.3 왜 파이썬인가?
파이썬의 특징
- 범용적인 고수준 언어이며, 코드를 읽기 쉬워 작성하기도 쉽다.
- 코드의 형태가 정적 언어들에 비해 간결하다.
- "Batteries included"* 철학에 부합하고자, 많은 사람이 기여한 유용한 라이브러리들을 함께 제공한다.
- 작은 프로그램을 테스트하기 용이한 대화식 인터프리터를 제공한다.
- Python은 특정 기업의 소유가 아니다.
* Zen of Python - "Batteries included"
- Python의 Self-Sufficient적 특성을 의미한다.
- Python은 많은 사람들이 기여한 유용한 Library를 함께 제공한다.
1.4 파이썬을 쓰면 안 될 때
- Python은 CPU-Bound 프로그램* 작성에 불리하다.
* CPU-Bound Program
- CPU 연산을 많이 필요로 하는 프로그램을 의미한다. (계산 작업이 빈번한 프로그램 등)
- 이 경우의 일반적인 대안으로는 C/C++, Java 등이 있다.
※ Python의 표준 인터프리터는 C로 작성되었으며, C 코드로의 확장이 가능하다.
1.5 파이썬 2와 파이썬 3
- Python 2와 Python 3는 서로 호환되지 않는다.
- Python 3는 Python 2와 거의 동일하지만, Python 3에는 Unicode Character 처리 기능이 추가되었다.
1.6 파이썬 설치하기
- Python Download Page (URL)
- Python Release for WindowsPython Releases for Windows (URL)
- Python Releases for Mac OS X (URL)
- Python Source Releases (Linux and Unix) (URL)
1.7 파이썬 실행하기
Interactive Interpreter (대화식 인터프리터)
- Python이 제공하는 작은 프로그램을 테스트하기 쉬운 환경이다.
- 커맨드 라인에 코드를 입력하고 결과를 그 즉시 확인할 수 있다.
※ 다른 일반적인 환경에서는 \(\texttt{python fileName.py}\) 와 같이 파이썬 프로그램을 실행할 수 있다.
1.7.1 대화식 인터프리터 사용하기
- 대화식 인터프리터가 자동으로 값을 출력하는 것은 Python 언어의 일부라서가 아니며, 시간을 절약하기 위한 기능이다.
1.7.2 파이썬 파일 사용하기
- 일반 텍스트 편집기에서 Python코드를 작성하고, 파일의 확장자를 .py로 저장하여 파이썬 프로그램 소스코드를 만든다.
- 터미널 창에서 \(\texttt{\$ python fileName.py}\) 를 입력하여 Python 프로그램을 실행시킬 수 있다.
1.7.3 그 다음에는
- 많은 IDE에서 Python을 지원하고 있으며, 대체로 고급 텍스트 편집 기능과 도움말을 보여주는 GUI 환경을 갖추고 있다.
1.8 파이썬 철학
- 대화식 인터프리터에 \(\texttt{import this}\)를 입력하면 Zen of Python(파이썬 철학)을 간결하게 표현한 단문들이 출력된다.
>>> import this
The Zen of Python, by Tim Peters
(파이썬 철학, 팀 피터스)
Beautiful is better than ugly.
(아름다운 것이 추한 것보다 낫다.)
Explicit is better than implicit.
(명확한 것이 함축적인 것보다 낫다.)
Simple is better than complex.
(단순한 것이 복잡한 것보다 낫다.)
Complex is better than complicated.
(복잡한 것이 난해한 것보다 낫다.)
Flat is better than nested.
(단조로운 것이 뒤엉킨 것보다 낫다.)
Sparse is better than dense.
(분포되어 있는 것이 빽빽한 것보다 낫다.)
Readability counts.
(가독성은 중요하다.)
Special cases aren't special enough to break the rules.
(특별한 경우라 하더라도 규칙을 어길 수 있을 만큼 특별하지 않다.)
Although practicality beats purity.
(비록 실용성이 순수함을 앞선다 할지라도.)
Errors should never pass silently.
(오류를 절대로 조용히 넘기면 안된다.)
Unless explicitly silenced.
(분명하게 조용하지 않는 한.)
In the face of ambiguity, refuse the temptation to guess.
(모호한 상황에서도 추측하려는 유혹을 떨쳐내야 한다.)
There should be one-- and preferably only one --obvious way to do it.
(그것을 할 수 있는 분명한 한 가지 방법이 있어야 한다. 그 방법이 유일하다면 더 좋다.)
Although that way may not be obvious at first unless you're Dutch.
(네덜란드 사람(파이썬 창시자)이 아니라면, 처음에 그 방법이 분명하지 않을 수도 있다.)
Now is better than never.
(지금 하는 것이 하지 않는 것보다 낫다.)
Although never is often better than *right* now.
(비록 하지 않는 것이 종종 지금 *당장*하는 것보다 나을지라도.)
If the implementation is hard to explain, it's a bad idea.
(구현한 것이 설명하기 어렵다면, 그것은 나쁜 아이디어이다.)
If the implementation is easy to explain, it may be a good idea.
(구현한 것이 설명하기 쉽다면, 그것은 좋은 아이디어일 것이다.)
Namespaces are one honking great idea -- let's do more of those!
(네임스페이스는 정말 좋은 아이디어이다. 더 많이 사용하자!)
1.9 연습문제
1.1 컴퓨터에 파이썬 3가 설치되어 있지 않다면 부록 D를 참조해서 컴퓨터 시스템에 맞는 파이썬을 설치하라.
Sol 1.1
Python Download Page (URL)
Download Python
The official home of the Python Programming Language
www.python.org
1.2 파이썬 3 대화식 인터프리터를 실행해보라. 자세한 사항은 부록 D에 있다. 인터프리터는 처음 몇 라인을 출력하고 \(\texttt{>>>}\)로 시작하는 한 라인을 볼 수 있어야 한다. 이것은 파이썬 명령을 입력하기 위한 프롬프트이다.
Sol 1.2
Windows 환경)
실행키 + R -> cmd -> python
1.3 대화식 인터프리터에 익숙해져라. 인터프리터를 계산기처럼 사용해보자. 8 * 9를 입력하고 엔터키를 눌러서 결과를 살펴보라.
Sol 1.3
>>> 8 * 9
72
1.4 숫자 47을 입력하고 엔터키를 눌러보라. 47이 출력되었는가?
Sol 1.4
>>> 47
47
1.5 print(47)을 입력하고 엔터키를 눌러보라. 역시 47이 출력되었는가?
>>> print(47)
47
Reference: Introducing Python(처음 시작하는 파이썬) (Bill Lubanovic 저, O'Reilly, 2015)