
함수
파이썬 함수는 예약어 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 |