---
title: "Python 정리 05"
date: "2019-05-10"
tags: ["Python"]
status: archived
verified: false
---

---

## Dict

* dict를 format()의 매개변수로 주면 키값을 찾아 들어간다

```python
name='노진경'
age=20
addr='서울시 강서구 까치산'

print('{addr}에 거주중인  {name}님/{age}세'.format(name='김희철',addr='서울시 동작구',age=20))
```

![01](/md/legacy-assets/python/05/01.webp)

```python
name='노진경'
age=20
addr='서울시 강서구 까치산'

# dict 앞에 값은 키이고 뒤는 값, 변수값이 할당되어 들어간다
print('{addr}에 거주중인  {name}님/{age}세'.format(name=name,addr=addr,age=age))
```

![02](/md/legacy-assets/python/05/02.webp)

# 예외처리(Exception Handling)

* 문법적으로 문제가 없는 코드를 실행하는 중에 발생하는 오류를 처리하는 것
* 프로그램의 비 정상적인 종료를 막는 방법

```python
try:
    예외 발생예상 코드
except 예외처리객체 as alias:
    예외 발생시 제공할 코드
except 예외처리 객체 as alias:
    예외 발생시 제공할 코드
else:
    아무런 에외가 발생하지 않았을 때 실행할 코드
finally:
    반드시 실행되어야 할 코드
```

* 자바와는 다르게 **Exception**이 아닌 **Error**

```python
group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']

# 에러 발생
print("1조의 희망 {name}은 오후에 조퇴각".format(name=group1List[6]))
```

![03](/md/legacy-assets/python/05/03.webp)

```python
group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']

# 예외 처리
try:
    print("1조의 희망 {name}은 오후에  조퇴각".format(name=group1List[6]))
except IndexError as ie:
    print('잘못된 인덱스 번호 : ',ie)
```

![04](/md/legacy-assets/python/05/04.webp)

```python
group1List = ['김정윤','이재찬','박은영','백인재','이봉현','정택성']
num = 5

try:
    print("1조의 희망 {name}은 오후에  조퇴각".format(name=group1List[num]))
    num1 = num/0
    print(num1)
except IndexError as ie:
    print('잘못된 인덱스 번호 : ',ie)
```

![05](/md/legacy-assets/python/05/05.webp)

```python
...
try:
    print("1조의 희망 {name}은 오후에  조퇴각".format(name=group1List[num]))
    num1 = num/0
    print(num1)
except IndexError as ie:
    print('잘못된 인덱스 번호 : ',ie)
except ZeroDivisionError as zde:
    print('0으로 나눌 수 없습니다 : ',zde)
```

![06](/md/legacy-assets/python/05/06.webp)

```python
...
# except ZeroDivisionError as zde:
#    print('0으로 나눌 수 없습니다 : ',zde)
except: # except만 적으면 모든 예외를 처리가능
    print('모든 예외를 처리할 수 있다')
```

![07](/md/legacy-assets/python/05/07.webp)

```python
...
try:
    print("1조의 희망 {name}은 오후에  조퇴각".format(name=group1List[num]))
    num1 = num/2
    print(num1)
...
else:
    print('정상적으로 종료되었을 때 실행될 코드')
```

![08](/md/legacy-assets/python/05/08.webp)

```python
...
    num1 = num/0
...
else:
    print('정상적으로 종료되었을 때 실행될 코드')
finally:
    print('반드시 실행될 코드')
```

![09](/md/legacy-assets/python/05/09.webp)


* **예외 강제 발생**
  * 특정 상황에서 예외를 강제로 발생시켜 처리하는 것
  * 함수내 발생된 예외를 처리하지 않으면 호출한 곳으로 날려짐

```python
raise 예외처리객체명("메시지")
```

* **사용자 정의 예외 만들기**

```python
class 예외처리 객체명(Exception):
    def _init_(self):
        super().__init__("사용자정의 예외가 발생하였음")
```

## 클래스

* **OOP, 객체지향 프로그래밍**
    * **데이터를 포함한 데이터 구조(field, attribute)와 함수(function, procedure)로 구성**
    * 객체 내부에 포함된 데이터를 function을 통해 수정 가능
    * 프로그램은 모두 객체로 분해되어 설계되고, 객체간 서로 상호작용을 통해 수행
    * 파이썬은 함수를 기반으로 작업하지만 간혹 클래스를 사용하기도 함
    * 파이썬의 object클래스의 기능과 속성은 모두 상속받는다
    * 사용자가 작성한 클래스는 대문자로 클래스명을 부여한다
* **클래스 문법**
    * self를 안받으면 field를 사용할 수 없다

```python
class 클래스명(부모클래스명):
    변수명=값

    def __init__(self):
        생성자
        # 변수사용 : self.변수명

    def 함수명(self):
        ...
```

* **객체화 문법**

```python
변수명 = 생성자()
```

```python
# -*- coding:UTF-8 -*-
class TestClass:
    name='기미철'
    age=26
    def __init__(self):
        print('생성자')
        
    def getName(self):
        return self.name
    
    def printAge(self):
        print('나이 : {age}세'.format(age=self.age))
        return self.age
    
    def setAge(self,age):
        self.age = age
    
    
tc = TestClass() #클래스 객체 생성

tc.name = '김정윤'
name=tc.getName()
print('이름 : '+name)

tc.setAge(30)
tc.printAge()
```

![10](/md/legacy-assets/python/05/10.webp)
