본문 바로가기

[python] 함수와 메서드의 이론 학습과 연습 문제

Derrick 발행일 : 2023-08-01
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))

 

 

댓글