본문 바로가기
Python & Django

Python 함수, 예외처리, 클래스

by softserve 2021. 5. 22.
반응형

1. 함수

 

기본 라이브러리에서 제공하는 print() input() 등은 모두 함수이다.

 

함수 또는 메소드는 일정한 동작을 수행하는 단위를 말한다.

 

def를 이용해 직접 함수를 정의하여 사용할 수 있다.

 

하나의 파일 내에서 함수를 정의하고 사용할 수도 있지만, 별개의 파일로 작성할 경우에는 import 해주어야 한다.

 

cal.py

def divide(x,y): # 나누기 함수
	return x/y;

main.py

1) 함수만 가져오는 경우

from cal import divide # cal.py 파일로부터 divide()를 가져온다

print(divide(4,2)) # 4/2를 출력한다.

2) 파일 전체를 포함시키는 경우

import cal # cal.py를 가져온다.

print(cal.divide(4,2)) # cal.py의 divide 함수를 이용해 4/2를 출력한다

 

2. 예외처리

 

예외처리란 프로그램이 동작함에 있어 발생할 수 있는 여러 가지 사고들을 미연에 방지하여 프로그램의 완성도를 높이는 것을 말한다.

 

즉, 프로그램은 단순히 기능을 구현했다고 해서 완성되는 것이 아니고 완벽한 예외처리를 거침으로써 비로소 완성된다.

 

사용자에게 예외적인 상황이 발생하였음을 알리거나 프로그램을 종료하는 등의 조치를 취하지 않으면

 

제품에 대한 신뢰도가 떨어지게 될 뿐 아니라 전체 시스템을 다운시키는 등의 문제를 야기할 수 있다.

 

놓치기 쉬운 부분이므로 모든 경우의 수를 따져보고 예외처리를 하였는지 한 번 더 생각해볼 필요가 있다.

 

다음은 사용자 입력을 받아 나눗셈을 실행하는 프로그램이다.

x = int(input("x: "))
y = int(input("y: "))

result = x / y

print("x / y = ", result)

사용자가 나눗셈의 규칙을 완벽히 인지하고 적절한 숫자를 입력하면 프로그램 정상적으로 수행이 되지만

 

0으로 나누거나 문자를 입력하는 경우 오류가 발생하게 된다.

 

python에서 예외처리는 try ~ except로 하며, 위 화면에 나오는 오류코드를 알아둘 필요가 있다.

 

import sys # sys 라이브러리를 가져온다

try: # 이하의 문장을 시도해본다(try)
	
    x = int(input("x: "))
	
    y = int(input("y: "))

except ValueError: # "ValueError", 즉 입력값에 문제가 있다면
	
    print("ERROR: Please enter a number!") # 경고문을 표시하고
    
    sys.exit(1) # 프로그램을 종료시킨다.

try:
	
    result = x / y
    
except ZeroDivisionError: # 0으로 나누는 경우
	
    print("ERROR: You can't divide by 0")
    
    sys.exit(1)

print("x / y = ", result)

 

 

3. 클래스

 

python도 객체지향 언어로서, 객체들의 공통된 속성이나 연산을 정의하는 '클래스'를 생성할 수 있다.

 

class Light(): # Light 클래스
	def __init__(self, x, y): # __init__ 메소드는 생성자와 같은 역할을 하며 객체 생성시 실행된다.
    	self.colortemp = x
        self.brightness = y
    
    def turnON(self): # 전원을 켠다
    	self.power = True
     	print(self.__class__.__name__, "turned on")
    
    def turnOFF(self): # 끈다
    	self.power = False
        print(self.__class__.__name__, "turned off")
        
    def brightUp(self): # 밝기를 높인다
    	self.brightness += 100
        print(f"{self.brightness}lux")

	def brightDown(self): # 낮춘다
    	self.brightness -= 100
        print(f"{self.brightness}lux")
        
stand = Light(1500, 400) # Light 클래스의 객체인 stand를 생성한다

stand.turnON()

stand.brightUp()

stand.brightDown()

stand.turnOFF()

이 때 중요한 것이 'self'이다.

 

java에서의 'this' 에 대응되는 것으로 객체 인스턴스 자기 자신을 가리킨다.

 

java에서는 this를 반드시 사용할 필요는 없지만

 

python에서는 self의 사용이 필수적이다.

반응형

댓글