728x90
반응형
1. 예외처리
- 에러를 처리하는 구문
- try에서 에러가 발생하면, except에서 발생한 에러를 처리하는 코드를 실행
1.1. 기본형
try:
# 실행할 코드
except:
# 예외 발생 시 처리할 코드
else:
# 예외 미 발생 시 처리할 코드
finally:
# 항상 처리할 코드
1.2. 예시
- try-except로 구성된 예외처리문
try:
a = [1,2,3,4]
print(a[5]) #index error
except:
print("잘못된 인덱스 접근")
- 특정 에러에 대한 예외처리문
try:
a = [1,2,3,4]
print(a[5]) #index error
except IndexError:
print("잘못된 인덱스 접근")
- try-except-else-finally로 구성된 예외처리문
a = [1,2,3,4]
for i in a:
try:
print(a[i])
except IndexError:
print("잘못된 인덱스 접근")
else:
print("예외가 발생하지 않았습니다.")
finally:
print("예외처리문 실행완료:)")
1.3. 예외 일으키기
- 기본형
raise Exception
# Exception : 일으킬 예외명을 명시
- 예시
raise NameError('HelloWorld')
raise IndexError
2. 데코레이터
- 클로저를 활용하여, 호출하는 함수
- 함수를 수정하지 않고, 추가 기능을 구현할 때 사용함.
- 다른 함수를 미리 호출하는 용도로도 사용함.
5.1. 기본형
```함수의 몸체```
def decorater(func):
def inner_function():
func()
statement
return inner_function
@decorater
def function():
statement
# decorater: 데코레이터의 이름을 의미함
# inner_function: function을 실행하기 위해 존재하는 함수
# func: 다른 함수를 호출하기 위한 함수/키워드 (클로저 참고)
# function:
```함수의 호출```
function()
2.2. 데코레이터의 실행 순서
- function()을 호출하면
- @decorater를 통해, decorater()가 호출됨
- decorater()안에 있는 inner_function()이 호출되며,
function()이 호출됨
2.3. 예시
- 인자를 주지 않는 형태
def hello(func):
print("Hello")
def inner():
func()
return inner
@hello
def world():
print("world")
world()
- 인자를 주는 형태
def func_print(func):
def inner(*args):
print(*args)
func()
return inner
@func_print
def dummy():
pass
dummy(123)
- 가변인자를 주는 형태
def func_print(func):
def inner(*args, **kwargs):
func(*args, **kwargs)
return inner
@func_print
def calculate(num):
print("함수를 시작합니다.")
print("계산결과: ", num*2)
calculate(10)
- 알고리즘 시간 측정 예시
import time
def time_checker(func): # 알고리즘의 시잔을 재기위한 코드
def function(*args, **kwargs):
start_time = time.perf_counter()
result = func(*args, **kwargs)
end_time = time.perf_counter()
print("실행시간: ", (end_time-start_time))
return result
return function
@time_checker
def test(n): #실제 알고리즘이 존재하는 코드
for i in range(0,n+1):
pass
test(100000)
3. 코루틴
- 두 개의 함수가 동등한 상태에서 실행되는 상태
- 프로그램을 종료하기 전까지, 코루틴과 메인루틴은 동등하게 존재함.
- send()를 통해, 값을 보내며 실행하고
- yield를 통해 값을 가져올 수 있음
3.1. 기본형
- 클래스 만들기
def coroutine():
yield
variable = corutione()
variable.next()
variable.send(value)
# coroutine: 코루틴 함수의 이름
# yield: send()로 보내진 값을 받는 역할
# variable: 코루틴 객체의 변수
# next(): 코루틴을 최초로 작동시키는 함수
# send(): 코루틴을 실행하며, 값을 보내는 함수
3.2. 예시
- 일반적인 형태
def test():
while True: # 코루틴 종료 방지
num = yield
print(num)
var = test()
next(var)
for i in range(0,12):
var.send(i)
- 데코레이터를 사용했을 때
def coroutine(func):
def start():
next_statement = func()
next(next_statement)
return next_statement # 제너레이터 종료 방지
return start
@coroutine
def receiver():
while True: # 코루틴 종료 방지
num = (yield)
print(num)
c = receiver()
c.send(1)
반응형
'컴퓨터 관련 > 파이썬' 카테고리의 다른 글
[파이썬] 9. 객체지향 (0) | 2024.01.07 |
---|---|
[파이썬] 8. 함수 (1) | 2024.01.06 |
[파이썬] 7. 파일 입출력 (1) | 2024.01.06 |
[파이썬] 6. 조건문과 반복문 (0) | 2024.01.06 |
[파이썬] 5. 딕셔너리 (0) | 2024.01.06 |