반응형

1. 주석문

주석(Comment)은 코드의 내용을 설명하거나, 참조할 사항 등을 기록하는 것으로 프로그램 실행에는 전혀 영향을 미치지 않는다.


주석은 라인 어디에서나 시작할 수 있다. 한 라인에서 # 다음에 나오는 문자들은 주석으로 취급된다.


2. 연속 라인

줄바꾸기 앞의 ‘\’는 다음 라인을 현재 라인과 연결시켜 주는 역할을 한다.


3. 치환문

= 문은 우변의 객체 혹은 식을 좌변의 이름에 할당하는 것이다. 치환문(Assignment) 혹은 대입문이라고 한다. 변수 이름은 선언될 필요가 없다. 필요한 시점에서 치환하면 변수는 생성된다. 변수의 형은 우측의 객체에 의해서 결정된다.


하지만 다음과 같은 문은 에러이다. = 문은 좌변에 치환될 변수명이 와야 하기 때문이다.


‘=’은 ‘등호’가 아니라 치환 연산자이다. 오른쪽의 값을 왼쪽에 갖다 놓으라는 뜻이다.

‘등호’를 위한 연산자는 ‘==’라는 것이 있다. 등호는 두 개의 값이 동일한지 그렇지 않은지를 판별한다. 파이썬 2.2 이하에서는 만일 결과 값이 0이면 다른 값(거짓)임을, 1이면 같은 값(참)임을 나타낸다. 파이썬 2.3부터는 True, False로 진리 값을 나타낸다.

여러 값을 한 줄에 치환하는 기능을 보자.


그러나 다음과 같은 C 형식은 허용되지 않는다.


왜냐하면 ‘b = c + d’는 식(Expression)이 아니라 문(Statement)이기 때문이다. ‘x = y = z = 0’이 가능한 것은 파이썬 자체가 이러한 형식의 문을 지원하기 때문이지 ‘z = 0’이 식이기 때문이 아니다.


4. 확장 치환문

C 언어에서 사용되던 연산자로 앞서 배운 연산자를 치환문과 함께 사용할 수 있다. 확장 치환 연산자의 종류는 다음과 같다.


--------------------------------------------------------------------------------------------------------------------------

+=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, **=

--------------------------------------------------------------------------------------------------------------------------


‘x op=y’의 의미는 ‘x = x op (y)’와 같다. 즉, ‘a += 2’는 ‘a = a + (2)’와 같다.


5. 이름과 객체

파이썬은 다른 많은 언어와는 달리 변수의 이름과 값 객체가 분리되어 있다. 예를 들어, a = 1 이란 문에서 숫자 1이 변수 a에 저장되는 것이 아니다. 파이썬에서는 a를 이름, 숫자 1을 객체라고 하며, 두 개념은 분리되어 있다. 다음과 같은 구조를 가진다.


** 이름과 객체

일반적인 컴파일러 언어(소스 코드를 기계어 수준으로 번역해서 실행하는 언어, C언어가 대표적)는 이름과 객체의 개념이 분리되어 있지 않다. 컴파일러 언어에서 이름은 번역될 때 실제 메모리 주소로 모두 변환되므로 프로그램을 수행하는 런타임 시점에서는 이러한 심볼의 이름들은 의미가 없다. 즉, 변수 혹은 객체의 이름은 해당 객체의 주소로 변환된다.

이에 반해서 파이썬과 같은 동적인 자료형을 가지는 언어에서는(대부분은 스크립트 언어) 변수의 생성과 소멸이 언제든지 일어날 수 있기 때문에 이름이 주소로 변환되지 않고 별도의 장소에 이름이 보관되며, 이름과 객체와의 관계 정보를 추가로 가지고 있다. 이름이 저장되는 장소를 심볼 테이블(Symbol Table)이라고 한다.


6. 객체의 치환

다음과 같은 코드가 있다.


Y와 Z는 각각 객체 X를 내부 항목으로 지정했다. 이 때,

1. Y나 Z 안에 X가 복사되어 삽입되는 경우

(원래의 [1,2,3] 객체 이외에 또 다른 객체가 만들어지고, 새로 만들어진 [1,2,3] 객체가 Y와 Z에 삽입되는 경우)

2. [1,2,3]은 그대로 하나만 존재하고, 이 객체에 대한 참조만 Y와 Z에 삽입되는 경우

위 두가지의 경우가 발생할 수 있다.


테스트 코드로 이것을 확인할 수 있다.

즉, X의 값을 하나 바꿨을 때 Y와 Z에 영향을 미치면 이것은 공유 객체, 그렇지 않으면 분리된 객체이다.


X[1]만을 변경했는데, Y와 Z가 같이 변했다. 이것은 객체가 공유된다는 뜻이다. 사실 이름 X는 객체의 레퍼런스를 나타내는 것이므로 Y와 Z는 동일 객체의 레퍼런스만 저장하고 있는 것이다.


일반적으로 파이썬에서의 치환은 대부분 레퍼런스에 의해 이루어진다. 만일 객체의 복사를 원한다면 객체에서 따른 방법을 적용하거나 일괄적으로 copy모듈을 이용하면 된다.  

반응형
반응형

이제 파일에 프로그램을 작성하고 그것을 한꺼번에 실행해 보자. 윈도우나 리눅스에서 IDLE를 사용한다면 IDLE가 제공하는 에디터를 사용하면 된다. 그렇지 않다면 즐겨 사용하는 어떠한 에디터를 사용해도 된다.

리눅스에서는 emacs가 파이썬에 좋은 에디터로 알려져있으며 vim도 많이 사용한다.


윈도우에서 IDLE모드로 스크립트 작성하기 (ex: 2017년 7월 달력 만들기)

1. IDLE(GUI) 실행


2. 메뉴에서 File → New File(Ctrl-N) 클릭


3. 새로운 화면에 달력 스크립트 작성


4. File → save 누르고 파일명 저장 (ex:cal2017_07.py로 저장)

맨 마지막에 키보드 입력 구문을 넣지 않고 윈도우에서 실행하게 되면 실행 즉시

종료가 되는 현상이 발생하는데 이를 방지하기 위해서 구문을 추가해준다.


** raw_input 구문에 주석을 입력하고 저장시 다음과 같은 I/O Warning 메시지가 나올 수도 있는데

Edit my file 을 클릭하면 언어셋을 변경해준다.

(아마도 raw_input 구문 주석 부분에 한글로 입력이 되어있어 언어셋 변환이 필요해 보인다.)



Edit my file을 클릭하면 맨 위쪽에 언어셋 구문이 추가 되어있다.


5. 저장된 파이썬 파일을 실행한다.

[실행 결과]



리눅스에서 스크립트 작성 후 실행하기

1. 리눅스에서 터미널 창을 열어 #vim cal2017_07.py 명령어를 입력한다.

2. 편집기 창에서 파이썬 스크립트를 작성한다.


저장하는 방법은 : 키를 누르면 편집기에 커맨드 창이 나타나는데 이때 wq를 입력하면 저장이 되면서 터미널로 돌아가진다.


** 첫번째 줄 #!/usr/bin/python의 의미는 파이썬을 명시적으로 실행시키지 않고 스크립트를 실행하도록 하기 위해 추가 된 것이다.


3. 파일에 쓰기 권한을 준 후 스크립트 파일을 실행한다.

# chmod +x cal2017_07.py

#./cal2017_07.py


만약 스크립트에 첫번째 줄을 명시하지 않았다면 #python cal2017_07.py 로 실행하면 된다.


반응형
반응형

파이썬 프로그램은 대표적으로 두 가지 모드가 있다. 하나는 대화식 모드(Interactive Mode)이고 또 하나는 모듈 파일(Module File)혹은 스크립트 파일(Script File) 형식이다.

대화식 모드란 명령 하나를 입력하고 그 결과를 받는, 대화를 주고 받는 방식으로 작업을 진행해 가는 것이고, 스크립트 파일 형식이란, 텍스트 파일 안에 프로그램을 작성해 놓고 그것을 한꺼번에 실행하는 것이다. 스크립트 파일을 실행하면 프로그램이 종료될 때까지 실행을 멈추지 않는다.


1. 대화식 모드로 실행하기

대화식 모드로 실행하기(윈도우)

시작 →  모든 프로그램  → python2.7 → IDLE(python GUI) 를 클릭하면 다음과 같은 화면을 만나볼 수 있다.



이렇게 >>> 표시에 예를 들어 4+5를 입력하고 엔터를 치면 9라는 결과 값이 바로 출력이된다.

print ‘Hello World!’ 라고 입력을 하면 Hello World! 라고 출력이 된다.

이렇게 사용자와 파이썬이 대화를 하듯이 진행하는 모드를 대화형 모드라고 할 수 있다.



대화식 모드로 실행하기(유닉스/리눅스)

리눅스에서는 terminal 창을 열어 python이라고 입력을 하면 위에 윈도우와 동일하게 대화식 모드로 진입이 가능하다.



파이썬 인터프리터는 하나의 명령을 받고 그 결과를 돌려준다. 명령을 입력받을 준비가 되어있다는 것을 나타내기 위해 사용되는 문자열(>>>)을 프롬프트(Prompt)라고 한다.


** 참고사항 : 명령의 입력은 언제나 첫 컬럼부터 해야 한다. 그렇지 않으면 에러가 발생한다. 파이썬은 들여쓰기에 매우 민감한 언어이다.




2. 산술 연산하기

우리가 가장 편하게 사용하고, 컴퓨터가 가장 잘 할 수 있는 일이 바로 계산일 것이다. 파이썬을 수행시키고 다음과 같은 산술 명령을 해본다. 파이썬을 계산기로 사용해 보자.



우리가 잘 아는 사칙 연산을 수행하였다. 위에서 한 가지 이상하게 생각할 수 있는 점이 있다면 왜 9/5가 1이냐는 것인데, 한 가지 규칙만 알면 결과를 이해할 수 있다. ‘정수/정수’ 의 결과는 ‘정수’이다. 대부분의 컴퓨터 언어에서 ‘정수/정수’는 몫을 의미한다. 즉, 연산 결과의 소수점 이하를 버리는 것으로 이해할 수 있다.



3. 문자열 연산하기

문자열(String)은 단일 인용부호(‘) 혹은 이중 인용부호(“)로 묶인 문자의 열이다.

예를 들면 ‘adc’ “def” 등이다. 문자열을 출력하는 것은 print 문을 이용한다.



4. 종료하기

종료하는 방법은 윈도우 IDLE이나 리눅스에서는 ^D(Ctrl+D) 키를 누르거나, 도스 창에서는 ^Z를 입력하면 된다.


또 다른 방법은 sys.exit()를 이용하는 것이다.

>>> import sys

>>> sys.exit()


혹은 SystemExit 예외를 발생시키는 방법이 있다.

>>> raise SystemExit


5. 파이썬 버전 알아보기

코드 실행 중에 파이썬 버전을 알아보려면 sys 모듈의 version 혹은 version_info를 사용한다.


반응형
반응형

Python 2와 3의 차이

파이썬 버전 2와 3의 차이

* 파이썬 3에서는 모든 변수가 객체(object)로 처리됨

* 이외에 여러가지 내부적 변화가 있지만, 다음 4가지 정도를 알아두면 된다.


1. print문 괄호 필수

Python 2

print( 'hello' )
# hello
print 'hello'
# hello

Python 3

print( 'hello' )
# hello
print 'hello'
# Error! invalid syntax

2. str과 unicode 통일

Python 2

print( type('hello') )
print( type(u'hello') )
# <type 'str'>
# <type 'unicode'>

Python 3

print( type('hello') )
print( type(u'hello') )
# <class 'str'>
# <class 'str'>

→ 모든 문자열은 유니코드인 str



3. int 나누기 결과가 float

Python 2

print( 1/2 )
print( type(1/2) )
# 0
# <type 'int'>

Python 3

print( 1/2 )
print( type(1/2) )
# 0.5
# <class 'float'>

4. long → int로 통일

Python 2

print( 2**30 )
print( type(2**30) )
print( 2**100 )
print( type(2**100) )
# 1073741824
# <type 'int'>
# 1267650600228229401496703205376
# <type 'long'>

Python 3

print( 2**30 )
print( type(2**30) )
print( 2**100 )
print( type(2**100) )
# 1073741824
# <class 'int'>
# 1267650600228229401496703205376
# <class 'int'>


<제타위키 참조>

반응형
반응형

파이썬 설치 환경

윈도우 : windows 7

리눅스 : backtrack5 R3 (debian)

가상화(vmware)에서 진행


1. 윈도우에서 설치

최신 버전을 얻기 위해 파이썬 공식 홈페이지(http://www.python.org) 들어가서 Downloads 탭을 클릭



파이썬 최신버전을 다운로드 한다(글 작성 현재 기준 3.6.2 버전과 2.7.13버전이 최신버전)

설치는 2버전으로 진행을 할 것이며 2버전과 3버전의 차이점은 다음 포스팅에서 참조




설치파일을 다운로드 후 실행을 하면 다음과 같은 설치화면이 보일 것이다.

Install for all users (모든 사용자를 위해 설치)

Install just for me(본인을 위해 설치)

둘 중 어떤 것을 선택해도 상관없으며 선택을 완료하면 Next를 누른다.



설치 디렉토리 경로를 선택하는 화면이며 기본 설치 경로는 C:\Python27\ 이다.



설치 구성 요소를 선택하는 화면이며 기본 선택되어있는 것을 사용하면 된다.



구성 요소 선택이 완료되고 Next를 누르면 다음과 같이 설치가 진행된다.



설치가 완료되면 파이썬이 설치가 된 디렉토리로 들어가서 파이썬을 선택하면 된다.



2. 리눅스에 설치

리눅스 같은 경우 설치를 할때 대부분 python 이 설치가 되어있을 것이다.


터미널 창을 열어 python이 설치가 되어있을 경우 python 명령어를 치면 화면으로 들어가지며 python --version이라고 입력시 설치되어있는 python의 버전을 확인가능하다.



만약 설치가 되어있지 않다면?

debian , ubuntu 계열 : apt-get install python*

Redhat, CentOS 계열 : yum install python*

명령어를 입력하면 쉽게 설치가 가능할 것이다.


반응형
반응형

파이썬(python)은 어떤 언어인가?


- 대화 기능의 인터프리터 언어

파이썬은 객체지향 기능을 강력히 지원하는 대화형 인터프리터 언어다.

인터프리터 언어는 사용하기 쉬우며 컴파일하고, 실행해 보고, 에러를 고치는 기존의 절차에서 벗어나 작성한 다음 바로 테스트하는 간단한 언어다.


- 동적인 데이터 타입 결정 지원

파이썬은 동적으로 데이터 타입을 결정하므로 데이터 타입에 관계없는 일반화된 코드를 작성할 수 있다.


- 플랫폼 독립적 언어

파이썬은 리눅스, 유닉스, 윈도우 95/98/NT/2000, 도스, 등등 대부분의 운영 체제에서 동작한다. 플랫폼에 독립적이며 컴파일하지 않고도(내부적으로 자동 수행됨) 동작하기 때문에 사용하기도 쉽다. 자바와 같이 파이썬 바이트 코드를 생성하므로 소스 코드 없이도 다른 컴퓨터에서 즉시 수행된다.


- 개발 기간 단축에 초점을 둔 언어

파이썬은 실행의 효율성보다는 개발 기간 단축에 초점을 둔 언어다. 실행 속도로 말하자면 어셈블리 언어를 제외하고는 C에 견줄 만한 프로그래밍 언어는 없다. C는 효율적인 코드 생성에 큰 의미를 둔 언어이기 때문이다. 반면 파이썬은 개발의 효율성에 무게 중심을 두고 있다.


- 간단하고 쉬운 문법

파이썬의 간단한 문법과 깨끗하고 깔끔한 구문은 프로그래머는 물론, 프로그래머가 아닌 사람도 배우기 쉽고, 사용하기 쉽다.

일반적인 수학 기호나 다른 프로그래밍 언어에 약간의 경험이 있으면 쉽게 배울 수 있다.

객체지향 언어로서 파이썬은 재사용 가능한 코드를 쉽게 만들 수 있다.


- 고수준의 내장 객체 자료형 제공

파이썬은 일반적으로 사용되는 리스트(List), 사전(Dictionary) 및 문자열(String), 튜플(Tuple) 등의 자료 구조를 제공한다. 이러한 자료형들을 상당히 유연하게 그리고 쉽게 상요할 수 있다.


- 메모리 자동 관리

파이썬은 쓰레기 수집(Garbage Collection) 기능을 사용하여 필요할 때 메모리를 자동 할당하고 사용이 끝났을 때 자동으로 해제한다.


- 팀워크에 유용

파이썬은 모듈 단위의 코드를 쉽게 작성하고 결합할 수 있게 되어 있다. 각 모듈은 메인 프로그램이기도 하면서 다른 모듈의 라이브러리로 사용된다. 독립적으로 테스트된 모듈을 모으면 큰 프로그램이 된다.


- 쉬운 유지 보수

프로그램이란 한 사람에 의해서 완성되는 것이 아니라 여러 사람들에 의하여 유지되고 보수된다. 파이썬의 깔끔함 코드는 이해하기 쉬워서 코드의 유지 보수가 용이하다.


- 많은 수의 라이브러리 제공

파이썬은 이미 만들어진 많은 수의 라이브러리를 제공한다. 정규식 매칭부터 네트워킹까지 프로그래머들이 원하는 웬만한 기능은 라이브러리에서 찾을 수 있다. 또한 서드파티에서 제공하는 수많은 외부 모듈이 있다.


- 짧아지는 코드

파이썬은 일급함수(First Class Function : 1. 함수 객체를 변수에 저장 가능하고, 2. 함수에서 리턴 값으로 사용 가능하며, 3. 함수에 인수로 전달 가능한 함수)를 지원하며, 다중 상속과 지연 바인딩 기능을 지원하는 객체지향 언어다.

예외 처리를 하는 try..except.. 명령어를 제공하며 함수의 인수 전달 방식으로 선택적 인수, 키워드 인수 혹은 임의의 개수의 인수를 지원한다.


- 높은 확장성

파이썬은 일명 접착제 언어(Glue Language)라고도 한다. 다른 언어나 라이브러리에 쉽게 접근해 그들을 사용할 수 있기 때문이다. 가장 보편적인 언어인 C와는 아주 잘 결합된다.

기존의 C 프로그램을 파이썬과 결합시킬 수 있으며 소스 없는 라이브러리도 랩퍼(Wrapper) 함수(라이브러리의 함수를 중간에서 호출해주는 간단한 인터페이스 함수)만 써 주면 파이썬에서 사용할 수 있다.


- 확장(Extending) 및 내장(Embedding) 기능

파이썬은 매우 단순한 응용 프로그램 인터페이스(API)처럼 볼 수 있다. C 등 다른 언어에서 파이썬을 호출 할 수 있고, 그 응용 프로그램에서 내장시켜 사용할 수 있다. 파이썬에서 C 모듈을 호출하는 것도 물론 가능하다.


- 무료

파이썬은 저작권 등록이 되어 있지만 자유롭게 사용하고 배포할 수 있다. 상용으로 사용할 경우에도 마찬가지이다. 물론 소스도 공개되어 있다. 파이썬은 C로 만들어진 언어이다.  



반응형

+ Recent posts