업무를 하면서 문자열 등을 다룰 일이 꽤 생긴다. 쉘 스크립트로 처리하면 가장 이상적이겠지만, 워낙 불편해서 펄을 해볼까 하다 업데이트도 잘 안되는 듯 하고... 파이썬이 적합할 것 같아서 기초적인 공부를 해보기로 했다.
파이썬 패키지를 일일이 설치하기가 귀찮을 것 같아서 배포판을 선택, 그 중에서도 Anaconda로 설치했다.
(다운로드 : https://www.anaconda.com/download/)
C 밑에 바로 설치했는데, C:\Anaconda3\Lib\idlelib <- 이 경로로 가보면 idle.bat 이라는 파일이 있다. 이 것을 실행하면 python shell이 실행되면서 여기에서 간단한 테스트를 해 볼 수 있다.
다음은 파이썬 기초 및 특징
1. { }, ( ) 를 쓰지 않는다
쉘 스크립트나 PL/SQL을 쓰면서도 가장 적응이 안되는 부분인데, JAVA나 Javascript와 다르게 { }, ( )를 쓰지 않는다.
코드의 포함관계는 들여쓰기로 해결한다. 때문에 함부로 들여쓰기를 해서는 안된다. (Syntax error가 발생한다)
또한 if문 for문 에서는 괄호 없이 바로 조건문을 적는다.
2. 기본 데이터 타입
int, float, string 세 가지의 기본적인 데이터 타입이 존재한다.
3. 문자열은 ''와 ""로 표현가능
Javascript와 마찬가지로 문자열은 '' 안이나 "" 안에 넣어서 쓰면 된다.
4. 변수 타입을 정하지 않는다
int, char, float 등 타입을 명시하지 않고 바로 var = 'test_var' <- 이와 같이 변수를 선언하여 사용한다.
5. 기본 자료구조
리스트, 튜플, 딕셔너리라는 파이썬 자체의 기본 자료구조가 있다.
1) 리스트 : 일반적인 그 리스트와 비슷하다. list1 = ['a','b','c']와 같이 선언하며, 요소에 접근하기 위해서는 list1[0]과 같이
[] 안에 인덱스 번호를 주면 된다. 특이하게도 list1[-1]처럼 뒤에서부터 세는 방법도 있는데 이는 튜플에서도 쓸 수 있다.
아래와 같은 주요 메서드가 있다.
(1) append : list1.append('d')의 형태로 사용하며, 리스트 맨 끝에 요소를 추가한다.
(2) insert : list1.insert(2, 'd')의 형태로 사용하며, 지정한 인덱스에 요소를 추가한다.
2) 튜플 : 조작이 불가능한 배열이라고 해야할 듯 싶다. tu = ('a', 'b', 'c')와 같이 선언하며, 삽입이나 삭제가 되지 않는다.
리스트보다 속도가 빠르다는 장점이 있다. 접근은 리스트와 동일한 방식으로 한다.
3) 딕셔너리 : 맵 자료구조와 같다. dic = {'key1':'value1', 'key2':'value2'}와 같이 선언하며, dic['key1']과 같이 키 값을
인자로 주면 해당하는 값을 꺼낼 수 있다. 아래와 같은 주요 메서드가 있다.
(1) keys : dic.keys()의 형태로 사용하며, 딕셔너리가 가진 키 값들을 반환한다.
(2) values : dic.values()의 형태로 사용하며, 딕셔너리가 가진 밸류 값들을 반환한다.
(3) items : dic.items()의 형태로 사용하며, 키와 밸류의 쌍을 반환한다.
6. 자료구조 다루기
자료구조를 다루는 공통적인 함수 및 방법들이 있다.
1) del : del(list1[0])의 형태로 사용하며 인자로 넣은 요소를 삭제한다.
위에서 언급했듯이 튜플은 선언 이후 데이터 조작이 불가능하기 때문에 del을 사용하면 에러가 발생한다.
(del(tup)의 형태로 변수 자체를 삭제하는 것은 가능하다)
2) len : len(tup)의 형태로 사용하며 인자로 넣은 변수의 요소의 수, 문자열의 길이 등을 반환한다.
3) list : list(dic.keys())의 형태로 사용하며 인자로 넣은 값을 리스트로 변환하여 반환한다.
(list("abcd")와 같이 문자열을 넣으면 ['a','b','c','d']와 같은 형태로 바꾸어 준다)
4) slicing : 리스트 등의 자료구조에서 원하는 범위의 값을 가져올 때 쓰는 방법이다. list1[2:5]와 같은 형태로 사용하는데,
이는 앞의 인덱스의 요소를를 포함하고 뒤의 인덱스의 요소는 포함하지 않는 범위를 선택하게 해준다.
list1[0:], list1[:3]처럼 써서 ~부터 끝까지, 혹은 처음부터 ~까지의 범위를 지정할 수도 있다.
7. 조건문
다음과 같은 형태로 조건문을 사용한다.
1) if 문 :
if a < 0:
print('OK')
2) if ~ else 문 :
if a < 0 :
print('OK')
else :
print('NOT OK')
3) if ~ else if 문 :
if a == 0 :
print('1')
elif a == 1 :
print('2')
elif a == 2 :
print('3')
8. 반복문
다음과 같은 형태로 반복문을 사용한다.
for var in range(1, 10):
print(var)
위 코드에서 range(1, 10)은 1 이상 10 미만을 반환해준다. range 대신 리스트나 튜플이 올 수도 있고 딕셔너리를 써도 된다.
딕셔너리 자료구조를 쓸 경우에는 아래와 같이 사용한다.
for k, v in dic.items():
print("%s : %s", %(k, v))
위 코드에서 %s로 표현된 부분은 C의 printf처럼 사용하는 것이며, 쉼표(,)뒤에 % 이후 작성한 변수를 읽어들인다.