달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2017. 10. 22. 21:19

파이썬 기초1 Python2017. 10. 22. 21:19

업무를 하면서 문자열 등을 다룰 일이 꽤 생긴다. 쉘 스크립트로 처리하면 가장 이상적이겠지만, 워낙 불편해서 펄을 해볼까 하다 업데이트도 잘 안되는 듯 하고... 파이썬이 적합할 것 같아서 기초적인 공부를 해보기로 했다.


파이썬 패키지를 일일이 설치하기가 귀찮을 것 같아서 배포판을 선택, 그 중에서도 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처럼 사용하는 것이며, 쉼표(,)뒤에 % 이후 작성한 변수를 읽어들인다.

'Python' 카테고리의 다른 글

파이썬 기초2  (0) 2017.10.24
:
Posted by SK
2017. 8. 5. 17:58

PL/SQL 조건, 반복 제어문 DB2017. 8. 5. 17:58

<조건 제어문>

PL/SQL의 조건제어문에는 크게 IF와 CASE가 있다.

- IF문

IF var1 >10 THEN

do something

ELSIF var1 <= 10 AND var1 > 1 THEN

do something

ELSE

do something

END IF;

IF문은 위와 같이 사용하며, ELSE IF가 아니라 ELSIF인 것에 주의가 필요하다. 또한 AND, OR를 사용한다.

- CASE문

CASE var1 

WHEN var1 > 10 THEN

do something

WHEN var1 <= 10 AND var > 1 THEN

do something

ELSE

NULL;

END CASE;

CASE문은 위와 같이 사용하며, SQL의 CASE문과 유사한 사용법을 보인다. 

조건 분기 시 세부 로직에 NULL을 사용할 수 있는데, 아무것도 하지 않는다는 명시적 표현이다.


<반복 제어문>

반복제어문을 사용하는 방법에는 여러가지가 있는데, 가장 활용도가 높은 것이 FOR LOOP와 WHILE LOOP인 것 같다.

- FOR문

FOR var1 IN 1 .. 10 LOOP

do something

END LOOP;

FOR문의 위와 같이 사용하며 반복의 범위를 Start .. End의 형태로 표현할 수 있다.

- WHILE문

DECLARE

cnt NUMER := 0;

BEGIN

 WHILE var 1 < 10;

do something;

cnt : cnt + 1;

END LOOP;

'DB' 카테고리의 다른 글

Resource Manager  (0) 2019.02.09
파티셔닝  (0) 2019.02.09
PL/SQL 구조와 변수  (0) 2017.08.03
PL/SQL 시작하기  (0) 2017.07.18
해쉬 인덱스  (0) 2017.06.06
:
Posted by SK
2017. 8. 3. 21:26

PL/SQL 구조와 변수 DB2017. 8. 3. 21:26

<PL/SQL 구문의 구조>

PL/SQL은 다음과 같은 구조를 가지고 있다.

DECLARE (선언부)

프로그램에서 사용하는 객체 정의

BEGIN (실행부)

프로그램의 구체적인 실행 내용

EXCEPTION (예외처리부)

프로그램에서 예외 발생 시 처리할 내용

END;

/


위 구문에서 DECLARE 나 EXCEPTION 등은 로직에 따라서 생략도 가능하며, BEGIN과 END 사이에 다시 중첩으로 실행 블록을 넣는 것도 가능하다.


<변수>

변수의 선언은 var1 NUMBER; 와 같이 앞쪽에 변수명을 적고 뒤쪽에 데이터 타입을 적는다. 선언 시 var1 NUMBER DEFAULT 20;과 같이 기본값을 설정할 수 있다.

변수의 대입은 var1 := 10; 과 같이 := 연산자를 사용해야 한다.


변수의 타입은 크게 스칼라, 콤포지트, 참조 3가지로 나눌 수 있다.

 - 스칼라 타입 : 오라클에 의해 미리 정의된 데이터 타입이다. NUMBER, CHAR, VARCHAR2, DATE, BOOLEAN이 있다.

 - 콤포지트 타입 : 사용자에 의해 정의되어야 하는 타입이다. RECORD, TABLE, Nested TABLE, VARRAY가 있다.

 - 참조 타입 : 사용자가 정의하는 타입으로 처리 대상 데이터를 참조할 수 있는 특징이 있다. REF CURSOR가 있다.


이 외에 특수한 속성으로 %TYPE%ROWTYPE이 있다. 이 둘은 미리 정의된 변수의 데이터 타입을 참조할 때 사용한다.

먼저, %TYPE은 특정 컬럼의 데이터 타입을 참조할 때 쓰인다.

DECLARE

var1 dept.deptno%TYPE

BEGIN

SELECT deptno INTO var1 FROM dept WHERE location='KOREA'

END;

와 같은 프로그램에서는 var1이 dept 테이블의 deptno 컬럼의 타입을 따라가는 것이다.

다음으로 %ROWTYPE은 특정 행 구조를 참조할 때 쓰인다.

DECLARE

row1 dept%ROWTYPE

BEGIN

SELECT deptno, dname, location INTO row1 FROM dept WHERE deptno=10;

END;

위와 같은 프로그램에서는 row1이 dept테이블의 특정 row의 구조(deptno, dname, location)의 데이터 타입을 모두 가져간다.

'DB' 카테고리의 다른 글

파티셔닝  (0) 2019.02.09
PL/SQL 조건, 반복 제어문  (0) 2017.08.05
PL/SQL 시작하기  (0) 2017.07.18
해쉬 인덱스  (0) 2017.06.06
복합 인덱스  (0) 2017.06.06
:
Posted by SK