2010. 7. 31. 20:16
  • 파이썬의 객체 자료형

분야

설명

NoneType 

None 객체 자료형

TypeType 

type 객체의 자료형(type()으로 리턴되는 자료형)

BooleanType 

부울 자료형(파이썬 2.3이상)

IntType

정수형(예:123)

LongType 

롱형(예:123L)

FloatType 

실수(부동소수점)형 (예:12.34)

ComplexType 

복소수형(예: 1.0j)

StringType 

문자열형(예: 'Spam')

UnicodeType 

유니코드 문자열형(예: u'Spam')

TupleType 

튜플형(예: (1,2,3, 'spam'))

ListType

리스트형(예: [0,1,2,3])

DictType

사전형(예: {'Bacon':1, 'Ham':0})

DictionaryType

DictType의 또 다른 이름

FunctionType

사용자 정의 함수, 람다 함수형

LambdaType

FunctionType의 또 다른 이름

CodeType

compile() 함수에 의해 리턴되는 코드 객체형

ClassType 

사용자 장의 클래스 자료형

InstanceType 

사용자 정의 클래스 인스턴스형

MethodType

사용자 정의 클래스 인스턴스의 메쏘드형

UnboundMethodType

MethodType의 또 다른 이름

BuiltinFunctionType 

len(), sys.exit()와 같은 내장 함수의 이름

BuiltinMethodType 

BuiltinFunction의 또 다른 이름

ModuleType

모듈형

FileType

sys.stdout과 같은 오픈된 파일 객체형

XRangeType

xrange()에 의해 리턴된 자료형

SliceType

slice()에 의해 리턴된 자료형

EllipsisType

Ellipsis 자료형

TracebackType

sys.exc_traceback와 같은 traceback 객체형

FrameType

traceback 객체 tb안의 tb.tb_frame과 같은 프레임 객체형

BufferType

buffer() 함수로 생성된 버퍼 객체형

 

  • 기타의 자료형
    • 파이썬 전체 자료형의 종류를 알아보려면 모듈 types를 이용

>>> import types

>>> dir(types)

['BooleanType', 'BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType', 'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType', 'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType', 'GeneratorType', 'GetSetDescriptorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType', 'LongType', 'MemberDescriptorType', 'MethodType', 'ModuleType', 'NoneType', 'NotImplementedType', 'ObjectType', 'SliceType', 'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType', 'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__', '__file__', '__name__', '__package__']

  • types 모듈을 이용하여 자료형 비교

>>> from types import *

>>> type(123) == IntType

True

>>> type('abc') == StringType

True

 

  • 내장 자료형 알아보기
    • 자료형이 무슨 형인지 알려면 type 내장 함수를 이용
    • type 함수는 자료의 종류를 담고 있는 type 객체를 리턴

>>> type({})

<type 'dict'>

>>> type('abc')

<type 'str'>

>>> type(None)

<type 'NoneType'>

>>> type([])

<type 'list'>

>>> type(())

<type 'tuple'>

>>> type(type({}))

<type 'type'>

# 자료형 비교 예

>>> a = 0

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

>>> type(a) == type(0) # a가 정수인지 검사

True

 

Posted by devanix
2010. 7. 31. 18:07
  • 주요 내장 자료형

자료형

설명

수치형(Numbers)

정수, 롱형, 실수, 복소스등 표현

123, 12345L, 1.43 5+3

문자열(Strings)

문자들의 모임 (내용 변경 X)

'spams', "ham", "'egg'",

"""hot dog"""

리스트(Lists)

순서를 갖는 파이썬 임의 객체의 집합

['ham', 'spam']

사전(Dictionaries)

순서를 갖지 않는 객체의 집합

키(key)로 값을 꺼낸다.

{'ham':4, 'spam':5}

튜플(Tuples)

순서를 갖는 파이썬 임의 객체의 집합

(내용 변경 X)

('ham', 'spam')

파일(Files)

파일에 자료를 입.출력하기 위한 객체

f = open('ham')

 

  • 자료 저장 방법에 따른 자료형의 분류

자료형

설명

직접자료형(direct)

직접 자료를 표현하는 자료형

수치형이 여기에 속함.

정수, 실수, 롱형정수, 복소수

시퀀스형(sequence)

다른 자료를 포함하는 자료형

(순서를 갖는 집합적 자료형)

문자열, 리스트, 튜플

매핑형(mapping)

다른 자료를 포함하는 자료형

(순서를 갖지 않는 집합적 자료형)

사전

  • 변경 가능성에 따른 자료형의 분류

자료형

설명

변경가능형(mutable)

자료의 값을 변경(O)

리스트, 사전

변경불가능(immutable)

자료의 값을 변경(X)

문자열, 튜플, 수치형

  • 자료 저장 개수에 따른 자료형의 분류

자료형

설명

리터럴형(literal/scalar)

한 가지 객체만 저장.

수치형, 문자열

저장형(container)

여러 가지 다른 객체를 저장

리스트, 튜플, 사전

  • 자료형의 분류

자료형

저장모델

변경 가능성

접근 방법

수치형

리터럴

불가

직접

문자열

리터럴

불가

시퀀스

리스트

저장형

가능

시퀀스

튜플

저장형

불가

시퀀스

사전

저장형

가능

매핑

 

  • 자료형들을 구분하는 또 다른 중요한 구분 기준

(1) '변경 가능하다'(mutable) – 리스트, 사전

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

>>> s[1] = 200

>>> s

[1, 200, 3]

(2)'변경 가능하지 않다'(immutable) – 수치형, 문자열, 튜플

>>> s = (1,2,3)

>>> s[1] = 20

Traceback (most recent call last):

File "<pyshell#6>", line 1, in <module>

s[1] = 20

TypeError: 'tuple' object does not support item assignment


Posted by devanix
2010. 7. 31. 17:35

1. 문자열

  • 문자열은 문자들(텍스트)를 표현하기 위한 자료형이다.
  • 단일 인용부호('') 혹인 이중인용부호("") 안에 묶여진 문자들의 모임.

>>> print 'Hello World!'

Hello World!

>>> print "Hello World!"

Hello World!

  • 인덱싱(indexing)으로 각각의 문자를 취할 수 있다.

>>> s = "Hello World!"

>>> s[-2]

'd'

  • 슬라이싱(slicing)으로 부분 문자열을 취할 수 있다.

>>> s[1:3]

'el'

>>> s[0:5]

'Hello'

  • 슬라이싱의 시작 위치가 생략되면 '처음부터', 마지막 위치가 생략되면 '끝까지'의 의미

>>> s = 'Hello'

>>> s[1:]

'ello'

>>> s[:3]

'Hel'

  • 슬라이싱은 세가지 값을 갖을 수 있다.[start:stop:step] (확장슬라이스(extended slice))
  • 파이썬 2.3부터는 내장 시퀀스 자료형에 몇 단계를 건너뛸까를 정하는 step이 지원.
  • 시퀀스 자료형인 문자열, 리스트, 튜플에 모두 적용.

>>> s = 'abcd'

>>> s[::2] # 2칸 단위로

'ac'

>>> s[::-1] # 거꾸로

'dcba'

  • 연결(+)과 반복(*)의 연산도 적용.

>>> 'Hello' + ' ' + 'World'

'Hello World'

>>> 'Hello' * 3

'HelloHelloHello'

>>> '-' * 60

'------------------------------------------------------------'

 

  • 문자열은 값이 변경되지 않는다.

>>> s = 'Hello World'

>>> s[0] = 'h'

Traceback (most recent call last):

File "<pyshell#16>", line 1, in <module>

s[0] = 'h'

TypeError: 'str' object does not support item assignment

  • 만일 문자열 변경을 원하면 슬라이싱과 연결하기를 이용.

>>> s = 'h' + s[1:]

>>> s

'hello World'

 

2. 리스트

  • []를 사용하는 리스트는 임의의 객체를 저장하는 집합적 자료형.
  • 각 자료는 순서를 가지고 있고, 순서에 의해서 접근.

>>> L = [1,2,3] # 세개의 자료를 갖는 리스트

>>> len (L) # 데이터 개수

3

>>> L[1] # 두번째 자료. 옵셋은 0부터 시작함.

2

>>> L[-1] # 마지막 자료.

3

>>> L[1:3] # 슬라이싱

[2, 3]

>>> L * 3

[1, 2, 3, 1, 2, 3, 1, 2, 3]

>>> L = range(10)

>>> L

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> L[::2] # 확장 슬라이스

[0, 2, 4, 6, 8]

>>> L[::-1] # 확장 슬라이스

[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

>>> L.append(4) # 리스트 마지막에 자료 추가

>>> L

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 4]

>>> del L[0] # 리스트 자료 삭제.

>>> L

[1, 2, 3, 4, 5, 6, 7, 8, 9, 4]

>>> L.reverse() # 리스트 순서를 거꾸로 바꾼다.

>>> L

[4, 9, 8, 7, 6, 5, 4, 3, 2, 1]

>>> L.sort() # 리스트를 오름 차순 정렬.

>>> L

[1, 2, 3, 4, 4, 5, 6, 7, 8, 9]

 

3. 튜플

  • ()를 사용하는 튜플도 문자열과 리스트와 유사한 특성을 가는다.

>>> t = (1,2,3)

>>> len(t)

3

>>> t[0]

1

>>> t[-1]

3

>>> t[0:2]

(1, 2)

>>> t[::2]

(1, 3)

>>> t + t + t

(1, 2, 3, 1, 2, 3, 1, 2, 3)

>>> t * 3

(1, 2, 3, 1, 2, 3, 1, 2, 3)

  • 튜플과 리스트의 차이 – 튜플은 값의 변경(X), 리스트는 값의 변경(O)
  • 또한 리스트는 다양한 메쏘드를 갖고, 튜플은 그렇지 않다.

>>> t = (1,2,3)

>>> t[0] = 100

Traceback (most recent call last):

File "<pyshell#89>", line 1, in <module>

t[0] = 100

TypeError: 'tuple' object does not support item assignment

 

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

>>> L[1] = 200

>>> L

[1, 200, 3]

 

4. 사전

  • 사전은 옵셋이 아닌 키를 사용하여 값을 얻는 자료 구조.
  • 사전에 x라는 키(key)를 주면 값 y를 돌려준다.
  • 사전은 초기화할 때 {}를 사용. - 초기값은 키:값의 형태로 준다.

>>> d = {'one':'hana', 'two':'dul', 'three':'set'}

>>> d

{'three': 'set', 'two': 'dul', 'one': 'hana'}

>>> d['one']

'hana'

>>> d['four'] = 'net'

>>> d

{'four': 'net', 'three': 'set', 'two': 'dul', 'one': 'hana'}

>>> d['one'] = 1

>>> d

{'four': 'net', 'three': 'set', 'two': 'dul', 'one': 1}

  • 사전은 순서에 따라 요소들을 저장하지 않는다. (키에 의해서 값을 추출)
  • 사전을 -> 리스트나 튜플로 변환하는 것이 가능

>>> d = {'one':1, 'two':'dul', 'three':'set', 'four':'net'}

>>> d.keys() # 키만 리스트로 출력.

['four', 'three', 'two', 'one']

>>> d.values() # 값만 리스트로 추출.

['net', 'set', 'dul', 1]

>>> d.items() # 키와 값의 튜플을 리스트로 변환.

[('four', 'net'), ('three', 'set'), ('two', 'dul'), ('one', 1)]

 

'Programming > Python' 카테고리의 다른 글

◎ 자료형 확인과 기타의 자료형  (0) 2010.07.31
◎ 내장 자료형의 분류  (0) 2010.07.31
◎ 콘솔 입 .출력  (0) 2010.07.30
◎ 문자열로 된 파이썬 코드 실행하기  (0) 2010.07.30
◎ 파이썬 기초문  (0) 2010.07.30
Posted by devanix
2010. 7. 30. 06:14
  • 콘솔 입력
    • 문자열 입력 (raw_input)
    • 정수나 실수 입력 (input)

>>> k = int(raw_input('int : '))

int : 89

>>> k

89

 

>>> i = input('int : ')

int : 45

>>> i

45

>>> k = input('expr:')

expr: 30+50

>>> k

80

 

>>> k = input('expr:')

expr:k+1

>>>k

81

 

 

  • 콘솔 출력
    • print
      • 화면으로 자료를 출력.(가장 보편적으로 사용)
      • 콤마(,)로 구분, 출력시 각 값들 사이에 공백 한 개각 추가.

>>> print 4+5, 4-2

9 2

  • 세미콜론(;)으로 분리된 문은 순차적으로 입력된 문들로 처리.

>>> print 1; print 2

1

2

  • 기본적으로 print문은 마지막에 줄바꾸기를 하지만, print 끝에 콤마(,)를 사용하면 줄바꾸기를 하지 않는다.

>>> print 1,; print 2

1 2

  • 일반 자료형들도 ''식을 이용하여 문자열로 변환한 후 출력.

>>> print 12 + 'spam' # 숫자와 문자열간에 + 연산은 없다.

Traceback (innermost last):

File "<pyshell#118>", line 1, in ?

print 12 + 'spam'

TypeError: number coercion failed

>>> print '12' + 'spam' # 숫자 12를 ''로 문자열로 변환한 후 공백업이 출력.

12spam

 

  • pprint 모듈 이용하기.
    • print문이 복잡한 자료를 출력할 때 적합하지 않다면 pprint를 사용.
    • pprint를 사용했을 경우 출력.

>>> import pprint # pprint를 사용하기 위해서 먼저 import 해야 한다.

>>> complicated = [ 'spam', (1, 2, 3), ('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w'))]

>>> complicated = complicated * 3

 

>> pprint.pprint(complicated)

['spam',

(1, 2, 3)

('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w')),

'spam',

(1, 2, 3)

('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w')),

'spam',

(1, 2, 3)

('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w'))]

  • print를 사용했을 경우 출력.

>>> print complicated

['spam', (1, 2, 3), ('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w')), 'spam', (1, 2, 3), ('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w')), 'spam', (1, 2, 3), ('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w'))]

 

  • 대화적 출력 후크(Interactive Display Hook) (2.1 이상) *
    • 인터프리터를 대화적으로 사용할 때 출력은 기복적으로 pepr() 내장함수 사용.
    • sys.displayhook을 설정하면 pepr() 대신에 다른 함수를 기본출력으로 사용.

>>> import sys, pprint

>>> sys.displayhook = pprint.pprint

>>> complicated # 직접

['spam',

(1, 2, 3)

('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w')),

'spam',

(1, 2, 3)

('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w')),

'spam',

(1, 2, 3)

('unix', 'linux', ('w', 'i', 'n', 'd', 'o', 'w'))]

 

Posted by devanix
2010. 7. 30. 05:08
  • eval – 문자열로 된 파이썬 식(expression)
    • eval (expression[, globals[, locals]])

>>> a = 1

>>> a = eval('a + 4')

>>> a

5

  • exec – 문자열로 된 문(statement)
    • exec code [ in globals [, locals]]

>>> a = 5

>>> exec 'a = a + 4'

>>> a

9

※ global – 전역 영역 사전, local은 지역 영역 사전. (이들 인수는 선택적)

  • compile(*)
    • exec나 eval은 문자열로 입력된 코드를 분석해서 파이썬 컴파일 코드로 변환하기 때문에,

      이러한 코드를 반복 수행하게 되면 변환에 필요한 시간은 크게 늘어난다.

    • 효율적인 수행 방법은 문자열을 파이썬 코드로 한번 변환해 둔 후에, 코드를 활용.
    • compile (string, filename, kind)
    • string – 코드 문자열, filename – 코드 문자열이 저장된 파일명, kind – 코드 종류 형식

>>> code = compile ('a + 1', '<string>', 'eval')

>>> a = 1

>>> for k in range(10):

a = eval(code)

>>> a

11

 

'Programming > Python' 카테고리의 다른 글

◎ 자료형의 종류(문자열,리스트,튜플,사전)  (0) 2010.07.31
◎ 콘솔 입 .출력  (0) 2010.07.30
◎ 파이썬 기초문  (0) 2010.07.30
◎ 변수명 및 예약어  (0) 2010.07.30
◎ 파이썬 설치  (0) 2010.07.30
Posted by devanix
2010. 7. 30. 04:58
  • 주석문(comment)
    • >>> # 주석(comment)
    • >>> import sys # 주석(comment)
  • 연속 라인
    • 줄바꾸기 앞의 \는 다음 라인을 현재 라인과 연결시켜 주는 역할.
    • 예) >>> if (a == 1) and \
  • 치환문(assignment)
    • (=) 문은 우변의 객체 혹은 식을 좌변의 이름에 할당.
    • >>> a = (b = c + d) 이와 같은 C같은 형식은 허용 되지 않음
    • 왜냐하면 b = c+d는 식(expression)이 아니라 문(statement)이기 때문.
    • 자료형 확인은 (type 함수)를 사용
  • 확장 치환문(2.0 이상)
    • +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=, **=
  • 이름과 객체
    • 변수의 이름과 값 객체가 분리.
    • a = 1이란 문에서 숫자 1이 변수 a에 저장되는 것이 아니라,
    • a를 이름, 숫자 1을 객체라고 하며, 두 개념은 분리되어 있다.

    [이름과 객체의 분리 a = 1]

  • 객체의 치환

    • X객체에 대한 참조만 Y와 Z에 삽입.
    • 즉, X의 값 하나를 바꿧을 때 Y와 Z에 영향을 미치면 이것은 공유객체,

      그렇지 않으면 분리된 객체임을 알수 있다.

Posted by devanix
2010. 7. 30. 04:54
  • 변수명 만드는 법
    • 첫 문자가 언더스코아(_), 영문자
    • 두 번째 문자는 영문자, 숫자, 언더스코아(_)
    • 정규식 표현([a-zA-Z_][a-zA-Z0-9_]*)
  • 예약어

and

del

for

is

raise

assert

elif

from

lambada

return

break

else

global

not

try

class

except

if

or

while

continue

exec

import

pass

yield(2.2에 추가)

def

finally

in

print

 
  • 프로그램으로 파이썬 예약어(keywork)를 아는 방법

  • 변수명 만들 때 조심할
    • 내장 함수 이름이나 모듈 이름은 피하는 것이 좋다.

Posted by devanix
2010. 7. 30. 04:48
[파이썬 설치]

 Windows
  • 공식 홈 (http://www.python.org) 다운로드.
  • 설치 디렉토리를 묻는 설치 초기화면.(기본값으로 설치).

  • 설치 구성 요소를 선택.(별 무리 없으면 모두 선택).

  • 설치 완료.

  • 파이썬 설치 요소들에 대한 간략한 설명
    • IDLE(Python GUI) - 파이썬 표준 GUI 대화식 인터프리터.
    • Module Docks – 원하는 모듈 검색 도구(파이썬 2.1 이상 지원)
    • Python (Command Line) – 도스창에서 수행되는 파이썬 대화식 인터프리터.
    • Python Manuals – HTML 파일 형식의 파이썬 온라인 문서 모음.


 Mac OS X

맥 OS X나 리눅스 계열에서는 대부분 Default로 설치 되어 있다.

다음과 같이 버전 확인을 하여 설치 유무를 확인 해 보자.

Devanix ~ $  python --version

Python 2.7.10


Posted by devanix