Data Analyst/Basic Python
[python] 함수와 메서드의 이론 학습과 연습 문제
Derrick
2023. 8. 1. 17:22
728x90
반응형
# 학습 목표
- 함수가 무엇인지 이해한다.
- 함수 중, 내장함수와 함수를 직접 만드는 것을 학습한다.
- 메서드와 함수의 차이를 이해한다.
1. 함수란?
함수란, 사용자가 정의한 특정 기능을 수행하는 코드의 모임
Python 안에서 어떠한 input(입력)을 받고 어떠한 임무/기능을 수행 후 결과를 출력(output, return)하는 역할
# 프로그래밍의 기본 틀
: 컴퓨터에게 정보를 입력하고, 컴퓨터가 작업을 하고 그 결과를 출력
# 함수 간단 예시 (내장함수)
- len() : 자료를 넣으면 그 자료의 길이를 알려준다.
- int() : 자료를 넣으면 정수형으로 변환해서 알려준다.
- str() : 자료를 넣으면 문자열로 변환해서 알려준다.
2. 함수의 종류
1) 내장함수
파이썬 개발자들이 이미 만들어 둔 함수로써 편리하게 사용하면 된다.
# 내장함수의 대표 예시
a = input() # Hello 입력
print(a) # Hello
print(max(1, 2, 3, 4, 5)) # 5
print(min([1, 2, 3, 4, 5])) # 1
print(sum((1, 2, 3, 4, 5))) # 15
print(len("Triangle")) # 8
- input() : 자료를 입력하는 함수
- print() : 자료를 출력하는 함수
- max() : 시퀸스 자료의 최댓값을 구하는 함수
- min() : 시퀸스 자료의 최솟값을 구하는 함수
- sum() : 숫자 원소로 이루어진 시퀸스 자료의 합
- len() : 시퀸스 자료의 길이를 구하는 함수
2) 사용자 지정 함수
사용자가 니즈에 따라 여러 코드를 통해 새로 만든 함수
# 함수 만드는 틀
def 함수이름(매개변수):
<수행할 명령>
.
.
.
return 반환값
- 매개변수(함수 안에서 사용되는 변수)를 이용하여 함수 내부의 값을 전달
→ 이 매개변수는 함수 밖에서 자료(데이터)를 가지고 함수에 적용할 수도 있다.
- return을 통해 함수 외부로 값을 전달
# 사용자 지정 함수의 예시
def plusDouble(a, b):
c = a + b
return 2*c
print(plusDouble(3, 4)) # 14
# return 실습
# return 없이 함수 내에서 출력한 경우 - 함수만 실행해도 print() 됨
def plus_print(a,b):
print(a+b)
# return 시킨 경우 - return 값의 정의로만 끝나기에 함수밖에서는 print 해야함
def times_return(a,b):
return a*b
plus_print(3,4) # 7
print(times_return(3,4) # 12
3. 전역 변수와 지역 변수
1) 전역변수
코드 내 어디서든 사용할 수 있는 변수 (함수 밖에서 정의된 변수)
x = "Hello!" # 전역 변수 (함수 밖에서 정의)
def my_func():
print(x)
my_func() # Hello!
print(x) # Hello!
2) 지역변수
특정 구문(for문, 함수 등) 안에서 정의한 변수. 정의한 범위 내에서만 사용 가능!
def my_func(a):
x = "Hello!" # 지역변수
print(x)
my_func() # Hello!
print(x) # Error
→ x 를 출력할려고하면 Error 발생!
함수 안에서 정의/실행되는 것은 '함수 밖에서는 영향을 끼치지 않는다!
3) 매개변수 & 인자
- 매개변수(parameter) : 함수를 정의할 때 넘겨받은 값을 관리하는 변수
- 인자(argument) : 함수를 호출할 때 함수로 넘겨주는 자료
def Double(a,b): # 여기서 a, b는 매개변수!
return a*b
print(Double(3, 4)) # 이때의 3, 4는 인자!
4. Method(메서드)
특정 자료에 대해서 특정 기능을 하는 코드(=함수)
# 메서드의 예시 - 선언한 my_list 자료 내에서 특정 기능 수행
my_list = [1, 2, 3]
my_list.append(4)
my_list.count(2)
my_list.pop()
# 함수 vs 메서드
- 함수는 특정 기능을 수행한다. (매개변수를 통해 자료 전달)
my_list = [1, 2, 3]
len(my_list)
sum(my_list)
min(my_list)
- 메서드는 특정 자료와 연관지어 기능을 수행한다. (자료 뒤에 . 을 찍어 사용)
my_list = [1, 2, 3]
my_list.sort()
my_list.pop()
my_list.clear()
# 딕셔너리에서도 활용
my_dict = {1:'one', 2:'two', 3:'three'}
var1 = my_dict.keys() # 딕셔너리.keys() : dict의 모든 Key 반환
var2 = my_dict.values() # 딕셔너리.values() : dict의 모든 value 반환
print(var1) # dict_keys([1, 2, 3])
print(var2) # dict_values(['one', 'two', 'three'])
5. 연습 문제
Q) 아래 조건을 따라 숫자를 입력 받고 그에 맞는 value를 출력하는 코드 생성하시오
→ 4 - love, 8-smile, 6-kiss 를 예시로 각 상응되는 문자가 출력되도록
→ 모든 4, 8, 6의 숫자조합에 대해 만족하도록 코드 작성
→ 예시) 486 입력 → lovesmilekiss
# 숫자 입력 받기
nums = input()
# 조건에 맞는 숫자와 상응하는 Value로 Dict 생성
dict = {4:'love', 8:'smile', 6:'kiss'}
# 입력받은 숫자를 통해 문자조합 생성하는 함수 정의
def yoonHa(nums):
# 빈 문자열을 생성해서, 상응하는 Value 추가하는 개념
a = ""
for i in nums: # 문자열의 각 글자를 반복인자로 사용
nums = int(i) # 입력받은 숫자는 문자열 형식이므로 int로 변경
a = a + dict[nums] # 추가하는 문자열 계속 더함
return a
print(yoonHa(nums))