함수
파이썬 함수는 예약어 def를 사용하여 정의하고 괄호() 안에 매개변수를 입력합니다. 클론(:)을 끝부분에 입력해주고 들여 쓰기로 시작되는 코드 블록이 함수의 연산에 해당하는 부분입니다.
1. 사용자 정의 함수
def test(a, b):
temp = a % b
return temp
print(test(5, 3)) # 2
modulo = test(5, 3) # 함수가 반환하는 출력값을 변수에 저장도 가능하다.
print(modulo) # 2
(a, b)와 같은 형태로 2개의 숫자를 원소로 갖는 투플을 사용하면 test 함수의 매개변수인 a, b에 입력값으로 전달이 가능합니다.
def test(a, b):
temp = a % b
return temp
tuple = [(5, 3), (2, 2), (10,4)] # 투플 생성
for a,b in tuple:
tuple = test(a, b)
print(tuple)
함수를 사용할 때 주의할 점은 지역변수와 전역변수 정의입니다. 지역변수는 함수 내에만 존재하는 변수이므로 함수 밖에서는 사용이 불가능하고, 전역변수는 파이썬 파일의 어느 부분에서도 사용할 수 있습니다.
def cal_modulo(a, b):
temp = a % b
return temp
num_pairs = [(5, 3), (2, 2), (10,3)]
for a, b in num_pairs:
modulo = cal_modulo(a,b)
print(modulo)
def cal_pairs_modulo(num_pair_list):
result = {}
for a, b in num_pairs:
modulo = a % b
result[(a,b)] = modulo
return result
mod_pairs = cal_pairs_modulo(num_pairs)
print(mod_pairs)
print(result)
cal_pairs_modulo 함수 내에 정의된 지역변수 result 변수를 함수 밖으로 호출했기 때문에 아래와 같은 에러 메세지를 확인할 수 있습니다.
2. 람다 함수
def add_num(num):
return num + 1
add_list = []
for x in [1,2,3]:
y = add_num(x)
add_list.append(y)
print(add_list) # [2, 3, 4]
람다 함수는 어떠한 함수를 값(x) : 출력값(y)의 형태로 간단하게 정의할 수 있습니다. 위의 함수를 변경하면 아래와 같습니다.
add_lambda = []
add_func = lambda x:add_lambda.append(x+1) # 람다 함수
for x in [1, 2, 3]:
add_func(x)
print(add_lambda)
3. 파이썬 내장 함수
: 파이썬에서 기본으로 제공하는 함수로 대표적인 내장 함수로는 sum, max, min, len, enumerate, range, list, eval, map, filter, int, str, round 등이 있습니다. 흔하지 않은 함수만 몇 가지 살펴보겠습니다.
⑴ enumertate 함수
: 리스트, 투플 등 원소 값에 순서가 있는 자료형을 입력받아 개별 원소를 인덱스 숫자와 함께 반환해 주는 함수
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
for i, num in enumerate(numbers):
print(i, num)
# 출력 결과
# 0 1
# 1 2
# 2 3
# 3 4
# 4 5
# 5 6
# 6 7
# 7 8
⑵ eval 함수
: 문자열을 입력받아 파이썬 코드로 변환하여 실행하는 함수
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
eval('print(numbers)')
# 출력 결과
# 1, 2, 3, 4, 5, 6, 7, 8
⑶ map 함수
: 여러 개의 원소를 갖는 자료형(리스트, 투플 등)과 이들 원소를 입력값으로 받는 함수를 매개변수로 갖는 함수. numbers 리스트의 원소들을 하나씩 add_one 함수에 입력 후 실행한 결과값이 순서대로 반환됨
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
add_one = lambda x:x+1
result = map(add_one, numbers)
print(list(result))
# 출력 결과
# [2, 3, 4, 5, 6, 7, 8, 9]
⑷ zip 함수
: 원소 개수가 같은 자료형들에 대하여 각 원소들을 인덱스 순서대로 매핑하여 짝은 짓는 함수. 자료형은 투플 형태를 가지며 for 반복문에서 사용하는 반복 객체를 만들 때 주로 이용됨
chars = ['a', 'b', 'c']
number = [1, 2, 3]
pairs = zip(chars, number)
print(list(pairs))
# 출력 결과
# [('a', 1), ('b', 2), ('c', 3)]
클래스
여러 개의 함수를 내부 메소드로 지정할 수 있고, 다양한 자료형 데이터를 내부 속성으로 가질 수 있습니다. 예약어는 class를 사용하여 클래스 이름 뒤에 콜론(:)을 붙이면 됩니다.
class Calculaor:
# __init__ 함수는 클래스 객체가 생성될 때 자동 실행되는 함수로 반드시 선언해주어야함
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
self.result = 0
def add(self):
self.result = self.num1 + self.num2
return self.result
def subtract(self):
self.result = self.num1 - self.num2
return self.result
cal = Calculaor(1, 2)
print(cal.add()) # 3
print(cal.subtract()) # -1
위와 같이 여러 개의 메소드를 각각 정의하고, cal 클래스 객체를 만들어서 cal.add() 등으로 하나의 메소드를 호출할 수 있습니다.
'개발 & 데이터베이스 > 파이썬' 카테고리의 다른 글
디스코드 봇 실행 오류 (1) | 2024.02.27 |
---|---|
파이썬 클래스 상속과 오버라이딩, 오버로딩 (0) | 2022.01.11 |
[파이썬] 기초 문법 #3 반복문과 break, continue 명령 (0) | 2022.01.07 |
[파이썬] 기초 문법 #2 조건문 (0) | 2022.01.06 |
[파이썬] 기초 문법 #1 문자열 인덱싱, 리스트, 투플, 딕셔너리 (0) | 2021.12.24 |