파이썬은 1990년 암스테르담의 귀도 반 로섬이 개발한 인터프리터 언어(한 줄씩 소스 코드를 해석해서 그때그때 실행해 결과를 바로 확인할 수 있는 언어)이다. 


파이썬과 C는 찰떡궁합이란 말이 있다. 즉, 프로그램의 전반적인 뼈대는 파이썬으로 만들고, 빠른 실행 속도를 필요로 하는 부분은 C로 만들어서 파이썬 프로그램 안에 포함시키는 것이다. 사실 파이썬 라이브러리들 중에는 순수 파이썬만으로 제작된 것도 많지만 C로 만들어진 것도 많다.


GUI(Graphic User Interface)프로그래밍이란 쉽게 말해 윈도우 창처럼 화면을 보며 마우스나 키보드로 조작할 수 있는 프로그램을 만드는 것이다. 파이썬으로 GUI프로그램을 만드는 것은 다른 언어를 이용해 만드는 것보다 훨씬 쉽다. 대표적인 예로 파이썬 프로그램을 설치할 때 함께 설치되는 기본 모듈인 Tkinter(티케이인터)를 이용해 만드는 GUI프로그램을 들 수 있다. 


파이썬에는 Numeric Python이라는 수치 모듈이 제공된다. 이 모듈은 C로 작성되었기 때문에 파이썬에서도 수치 연산을 빠르게 할 수 있다.


파이썬은 사이베이스, 인포믹스, 오라클, 마이에스큐엘(MySQL), 포스트그레스큐엘등의 데이터베이스에 접근할 수 있게 해주는 도구들을 제공한다. 또한 이런 굵직한 데이터베이스를 직접 이용하는 것 외에도 파이썬에는 재미있는 모듈이 하나 더 있다. 바로 피클이라는 모듈이다. 피클은 파이썬에서 사용되는 자료들을 변형없이 그대로 파일에 저장하고 불러오는 일들을 맡아 한다. 


대화형 인터프리터는 파이썬 셸이라고도 한다. 3개의 괄호(>>>)는 프롬프트라고 한다.


대화형 인터프리터를 종료할 때, Ctrl+D 또는

>>>import sys

>>>sys.exit()


파이썬은 복소수도 지원한다.


8진수를 만들기 위해서는 숫자가 0o or 0O(숫자0 + 알파벳 o 또는 대문자 O) 

>>>a=0o177


16진수를 만들기 위해서는 0x로 시작하면 된다.

>>>a=0x8ff


나눗셈 후 소수점 아랫자리를 버리는 // 연산자


문자열, 튜플 등의 자료형은 그 요소값을 변경할 수 없다.


3.3234를 삽입하려면 %f를 사용해야 한다. 하지만 %s를 사용하면 이런 것을 생각하지 않아도 된다. 왜냐하면 %s는 자동으로 % 뒤에 있는 값을 문자열로 바꾸기 때문이다.


리스트는 ... 아무것도 포함하지 않는, 비어있는 리스트([])일 수도 있고 .. 숫자와 문자열을 함께 요소값으로 가질 수도 있으며... 리스트 자체를 요소값으로 가질 수도 있다.


리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.


t2=(1,)처럼 단지 1개의 요소만을 가질 때는 요소 뒤에 콤마를 반드시 붙여야 한다.


딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요소값을 구하지 않고 Key를 통해 Value 값을 가진다. 

>>>dic={[name':'pey','phone':'010999333','birth':'1118'}


Value에 리스트도 넣을 수 있다.


딕셔너리에 Key는 고유한 값이므로 중복되는 Key값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점을 주의해야 한다. ... 이때 꼭 앞에 쓴것이 무시되는 것은 아니고 어떤 것이 무시될지는 예측할 수 없다.


Key에 리스트는 쓸 수 없다. 튜플은 Key로 쓸수 있다.


파이썬 2.7버전까지는 a.key()호출시 리턴값으로 dict_keys가 아닌 리스트를 리턴한다. 리스트를 리턴하기 위해서는 메모리의 낭비가 발생하는데 파이썬 3.0이후 버전에서는 이러한 메모리 낭비를 줄이기 위해 dict_keys라는 객체를 리턴해 준다. ... 만약 3.0 이후 버전에서 리턴값으로 리스트가 필요한 경우 'list(a.key())'를 사용하면 된다.


빈리스트를 [], 빈 튜플을 ()로 표현하는 것과 마찬가지로 빈 딕셔너리도 {}로 표현한다.


딕셔너리 안에 찾으려는 Key 값이 없는 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x,'디폴트 값')을 사용하면 편리하다.


set자료형 ... 중복을 허용하지 않는다. 순서가 없다. ... 순서가 없기 때문에 인덱싱으로 값을 얻을 수 없다.


>>> l1=list(s1) 리스트로 변환

>>> t1=tuple(s1) 튜플로 변환


문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어있으면 거짓이 된다. 숫자에서는 그 값이 0일 때 거짓이 된다. 


C언어나 JAVA처럼 변수의 자료형을 함께 쓸 필요는 없다. 파이썬은 변수에 저장된 값을 스스로 판단하여 자료형을 알아낸다.


a=3이라고 하면 3이라는 값을 가지는 정수 자료형(객체)이 자동으로 메모리에 생성된다. a는 변수의 이름이며, 3이라는 정수형 객체가 저장된 메모리 위치를 가르키게 된다. 즉, 변수 a는 객체가 저장된 메모리의 위치를 가르키는 레퍼런스라고도 할 수 있다. 파이썬의 모든 자료형은 객체.. 3은 우리가 일반적으로 생각하는 상수값이 아닌 하나의 '정수형 객체'이다. ... a=3 을 입력하는 순간 3이라는 정수형 객체가 생성되고 변수 a는 3이라는 객체의 메모리 주소를 가르킨다. 다음에 변수 b가 동일한 객체인 3을 가르킨다. 이제 3이라는 정수형 객체를 가르키는 변수가 2개가 됐다. 


튜플은 괄호를 생략해도 된다.


>>> a,b=b,a --> a 와 b 값을 바꿈


>>> del(a)

>>> del(b)

... 레퍼런스 카운트가 0개가 되는 순간 3이라는 객체는 자동으로 사라진다. ... 가비지 콜렉션(Garbage collection)


>>>a=[1,2,3]

>>>b=a   

>>>a[1]=4 --> a, b의 요소가 둘다 바뀐다.  

>>>b=a[:] --> a 리스트 전체를 복사하여 b에 대입 (a의 요소가 바뀌어도 b는 바뀌지 않는다)


>>>from copy import copy

>>>b=copy(a) --> b=a[:]와 동일하다.


if 조건문 뒤에는 반드시 콜론(:)이 붙는다. 


x or y, x and y, not x

x in 리스트/튜플/문자열, x not in 리스트/튜플/문자열


아무런 일도 하지 않도록 설정하고 싶을 때... 이럴 때 사용하는 것이 바로 pass이다.


while 문 강제로 빠져나가기 ... break ... [Ctrl+C]를 눌러 빠져나가도록 하자.


인스턴스는 클래스에 의해서 만들어진 객체


클래스 내 함수의 첫번째 인수는 무조건 self로 사용해야 인스턴스 함수로 사용할 수 있다 ...


클래스에서 이 __init__이라는 함수는 ... "인스턴스를 만들때 항상 실행된다."


클래스 함수를 다른 말로 매서드(Method)라고도 한다.


class 상속받을 클래스명(상속할 클래스명)


모듈이름은 mod1.py에서 .py라는 확장자를 제거한 mod1만을 가르킨다.


>>>from mod1 import sum

>>>sum(3,4)

mod1.py 파일의 sum함수만 사용할 수 있다. 


if __name__=="__main__"을 사용하면 ... 직접 이 파일을 실행시켰을 때는 __name__=="__main__"이 참이 되어 if문 다음 문장들이 수행된다. 반대로 대화형 인터프리터나 다른 파일에서 이 모듈을 불러서 사용할 때는 ... if문 다음 문장들이 수행되지 않는다.  


__init__.py 파일은 해당 디렉터리가 패키지의 일부임을 알려주는 역할을 한다. 


특정 디렉터리의 모듈을 *을 이용하여 import할 때에는 ... 해당 디렉터리의 __init__.py파일에 __all__이라는 변수를 설정하고 import할 수 있는 모듈을 정의해 주어야 한다.


id(object)는 객체를 입력받아 객체의 고유 주소값(레퍼런스)을 리턴하는 함수이다.


len(s)은 입력값 s의 길이(요소의 전체 개수)를 리턴하는 함수이다.




댓글(0) 먼댓글(0) 좋아요(3)
좋아요
북마크하기찜하기 thankstoThanksTo