> For the complete documentation index, see [llms.txt](https://sdc-james.gitbook.io/onebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sdc-james.gitbook.io/onebook/3./3.4./3.4.1..md).

# 4.4.1.     자료형

메모리에 저장된 데이터는 여러 유형이 있을 수 있습니다. 예를 들어, 사람의 나이는 숫자 값으로 저장되고 주소는 문자, 숫자로 저장됩니다. 자료형이란 프로그래밍을 할 때 쓰이는 숫자, 문자열 등 자료 형태로 사용하는 모든 것을 뜻합니다. 프로그램의 기본이자 핵심 단위가 바로 자료형입니다. 파이썬에는 가능한 표준 연산과 각각의 저장 방법을 정의하는 데 사용되는 다양한 표준 데이터 유형이 있습니다.

파이썬에는 다섯 가지 표준 데이터 유형이 있습니다.

1. &#x20; 숫자(Numbers)
2. &#x20; 문자열(String)
3. &#x20; 리스트(List)
4. &#x20; 튜플(Tuple)
5. &#x20; 사전(Dictionary)

**1)    숫자(number)**

숫자형(Number)이란 숫자 형태로 이루어진 자료형으로 숫자 값을 저장합니다.

```python
var1 = 1
var2 = 10
```

del 문을 사용하여 숫자 개체에 대한 참조를 삭제할 수도 있습니다. del 문의 구문은 다음과 같습니다.

```
del var1[,var2[,var3[....,varN]]]]
```

del 문을 사용하여 단일 개체 또는 여러 개체를 삭제할 수 있습니다.

```
del var
```

```
del var_a, var_b
```

파이썬은 네 가지 다른 숫자 타입을 지원합니다 -

* &#x20;        int (정수형)
* &#x20;        long (long integers, 8진수와 16진수로 표현될 수 있다)
* &#x20;        float (소수점이 포함된 숫자)
* &#x20;        complex (복소수)

다음 몇 가지 예제를 보겠습니다.

| int    | long                  | float      | complex    |
| ------ | --------------------- | ---------- | ---------- |
| 10     | 51924361L             | 0.0        | 3.14j      |
| 100    | -0x19323L             | 15.20      | 45.j       |
| -786   | 0122L                 | -21.9      | 9.322e-36j |
| 080    | 0xDEFABCECBDAECBFBAEl | 32.3+e18   | .876j      |
| -0490  | 535633629843L         | -90.       | -.6545+0J  |
| -0x260 | -052318172735L        | -32.54e100 | 3e+26J     |
| 0x69   | -4721885298529L       | 70.2-E12   | 4.53e-7j   |

* &#x20;        long integer 표현을 위해 대문자L 을 사용합니다.
* &#x20;        복소수는 x + yj로 표시된 실수 부동 소수점 숫자 쌍으로 구성됩니다. 여기서 x와 y는 실수이고 j는 허수 단위입니다.
* &#x20;        8진수(Octal)를 만들기 위해서는 숫자가 0o 또는 0O(숫자 0 + 알파벳 소문자 o 또는 대문자 O)로 시작하고, 16진수(Hexadecimal)를 만들기 위해서는 0x로 시작하면 됩니다.

**2)    문자열(string)**

문자열은 따옴표로 묶인 연속된 문자 집합을 의미합니다. 숫자도 따옴표안에 있으면 문자열입니다. 파이썬에서는 작은 따옴표나 큰 따옴표를 사용할 수 있습니다. 문자열의 부분 집합은 슬라이스 연산자 (\[ ] 및 \[ : ])를 사용하여 가능합니다. 문자열 시작 위치는 0이고 끝 위치는 -1 입니다.

플러스 (+) 기호는 문자열 연결 연산자이고 별표 (\*)는 반복 연산자입니다.

```python
str = 'Hello World!'
print str          # Prints complete string
print str[0]       # Prints first character of the string
print str[2:5]     # Prints characters starting from 3rd to 5th
print str[2:]      # Prints string starting from 3rd character
print str * 2      # Prints string two times
print str + "TEST" # Prints concatenated string
```

위 코드의 실행 결과는 다음과 같습니다.

```
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
```

**3)    리스트(list)**

리스트는 파이썬의 복합 데이터 유형 중 가장 다양한 기능을 제공합니다.&#x20;

리스트에는 쉼표로 구분되고 대괄호 (\[ ])로 묶인 항목이 있습니다. C의 배열과 차이점은 리스트에 속한 모든 항목이 다른 데이터 유형이 될 수 있다는 것입니다.

리스트에 저장된 값은 슬라이스 연산자 ( \[ ] 및 \[ : ] )를 사용하여 액세스 할 수 있습니다. 인덱스는 목록의 시작에서 0부터 시작하여 끝은 -1입니다. 더하기 (+) 기호는 목록 연결 연산자이고 별표 (\*)는 반복 연산자입니다.

```python
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']

print list          # Prints complete list
print list[0]       # Prints first element of the list
print list[1:3]     # Prints elements starting from 2nd till 3rd 
print list[2:]      # Prints elements starting from 3rd element
print tinylist * 2  # Prints list two times
print list + tinylist # Prints concatenated lists
```

위 코드의 실행 결과는 다음과 같습니다.

```
['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
```

**4)    튜플(tuple)**

튜플은 리스트와 비슷한 또 다른 시퀀스 데이터 유형입니다. 튜플은 리스트와 동일하게 쉼표로 구분된 여러 값으로 구성됩니다. 그러나 리스트는 \[ ]으로 둘러싸지만 튜플은 ( )으로 둘러싸여 있습니다. 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없습니다.

튜플은 읽기 전용 리스트로 생각할 수 있습니다. 실제 프로그램에서는 값이 변경되는 형태의 변수가 훨씬 많기 때문에 평균적으로 튜플보다는 리스트를 더 많이 사용하게 됩니다.

```
```

```python
tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
tinytuple = (123, 'john')

print tuple           # Prints complete list
print tuple[0]        # Prints first element of the list
print tuple[1:3]      # Prints elements starting from 2nd till 3rd 
print tuple[2:]       # Prints elements starting from 3rd element
print tinytuple * 2   # Prints list two times
print tuple + tinytuple # Prints concatenated lists
```

위 코드의 결과는 다음과 같습니다.

```
 ('abcd', 786, 2.23, 'john', 70.2)
 abcd
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')
```

튜플을 변경하려고 시도했으므로 다음 코드는 튜플에 대해 허용되지 않습니다. 이런 코드의 경우 리스트에서는 수행  가능합니다.

```
tuple = ( 'abcd', 786 , 2.23, 'john', 70.2  )
list = [ 'abcd', 786 , 2.23, 'john', 70.2  ]
tuple[2] = 1000    # Invalid syntax with tuple
list[2] = 1000     # Valid syntax with list
```

**5)    사전(dictionary)**

파이썬의 사전은 일종의 해시 테이블 형식을 말합니다. 사전은 연관 배열 혹은 해시처럼 작동하며 Key와 Value라는 것을 한 쌍으로 갖는 자료형입니다. 사전의 키(Key)는 거의 모든 파이썬 유형이 될 수 있지만 일반적으로 숫자 또는 문자열이고, 사전의 값(Value)은 임의의 Python 객체가 될 수 있습니다.

사전은 중괄호 ({ })로 묶이고 값은 대괄호 (\[ ])를 사용하여 할당하고 액세스 할 수 있습니다. 파이썬 사전에는 순서의 개념이 없습니다

```python
dict = {}
dict['one'] = "This is one"
dict[2]     = "This is two"

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}

print dict['one']       # Prints value for 'one' key
print dict[2]           # Prints value for 2 key
print tinydict          # Prints complete dictionary
print tinydict.keys()   # Prints all the keys
print tinydict.values() # Prints all the values
```

위 코드의 결과는 다음과 같습니다.

```
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']
```

**6)    자료형 변환**

기본 제공 자료형 간에 변환을 수행하려면 형식 이름을 함수로 사용하기 만하면 됩니다. 하나의 데이터 유형에서 다른 데이터 유형으로 변환을 수행하는 몇 가지 내장 함수가 있습니다. 이 함수는 변환된 값을 나타내는 새 객체를 반환합니다.

| Sr.No. | Function & Description                                                   |
| ------ | ------------------------------------------------------------------------ |
| 1      | int(x \[,base]) : x를 정수로 변환합니다. base는 x가 문자열 인 경우 기본을 지정합니다.             |
| 2      | long(x \[,base] ) : x를 long integer로 변환합니다. base는 x가 문자열 인 경우 기본을 지정합니다. |
| 3      | float(x) : x를 부동 소수점 숫자로 변환합니다.                                          |
| 4      | complex(real \[,imag]) : 복소수를 만든다.                                       |
| 5      | str(x) : 객체 x를 문자열 표현으로 변환합니다.                                           |
| 6      | repr(x) : 오브젝트 x를 표현식 문자열로 변환합니다.                                        |
| 7      | eval(str) : 문자열을 평가하고 객체를 반환합니다.                                         |
| 8      | tuple(s) : s를 튜플로 변환합니다.                                                 |
| 9      | list(s) : s를 리스트로 변환합니다.                                                 |
| 10     | set(s) : s를 집합으로 변환합니다.                                                  |
| 11     | dict(d) : 사전을 만든다. d는 반드시 (키, 값) 튜플의 시퀀스여야 합니다.                          |
| 12     | frozenset(s) : s를 고저오딘 집합으로 변환합니다.                                       |
| 13     | chr(x) : 정수를 문자로 변환합니다.                                                  |
| 14     | unichr(x) : 정수를 Unicode 문자로 변환합니다.                                       |
| 15     | ord(x) : 하나의 문자를 정수 숫자로 변환                                               |
| 16     | hex(x) : 정수를 16진수 문자열로 변환                                                |
| 17     | oct(x) : 정수를 8진수 문자열로 변환                                                 |
