[Python] 사용자 정의 함수

형이·2023년 11월 7일

Python

목록 보기
13/34
post-thumbnail

📝 사용자 정의 함수

🖥️ 1. 함수

  • 변수 x, y에 대해 x값이 정해지면 그에 따라 y값이 결정되는 것
  • 반복적으로 사용되는 가치 있는 부분을 묶어서 하나의 집합으로 만듦
  • 코드를 재활용하기 위한 목적

1-1. 이름만 있는 함수

[함수 작성]

def 함수명() :
	함수가 호출되면 실행할 문장
    ...
[함수 호출]

함수명()

def func1() :
  print('처음으로 만드는 함수 :)')
  
func1()

[결과]
처음으로 만드는 함수 :)
for i in range(5) :
  func1()
  
[결과]
처음으로 만드는 함수 :)
처음으로 만드는 함수 :)
처음으로 만드는 함수 :)
처음으로 만드는 함수 :)
처음으로 만드는 함수 :)

1-2. 매개변수(Parameter)가 있는 함수

[함수 작성]

def 함수명(변수1, 변수2, ...) :
	함수가 호출되면 실행할 문장
    ...
[함수 호출]

함수명(값1, 값2, ...)

def func2(num) :
  print('입력받은 숫자 : %d' % num)
  
func2(10)
func2(20)

[결과]
입력받은 숫자 : 10
입력받은 숫자 : 20
# func3(1, 10) -> 1부터 10까지의 합 : 55
# func3(1, 100) -> 1부터 100까지의 합 : 550

def func3(start, end) :
  sum = 0
  for i in range(start, end+1, 1) :
    sum += i
  print('%d부터 %d까지의 합 : %d' % (start, end, sum))
  
func3(1, 10)
func3(1, 100)
func3(5, 100)

[결과]
1부터 10까지의 합 : 55
1부터 100까지의 합 : 5050
5부터 100까지의 합 : 5040

1-3. 리턴값이 있는 함수

[함수 작성]

def 함수명(변수1, 변수2, ...) :
	함수가 호출되면 실행할 문장
    ...
    return값
[함수 호출]

변수 = 함수명(값1, 값2, ...)

def func4() :
  return '★'
  
start = func4()
print(start)

[결과]
def func5(num1, num2) :
  return num1 + num2

print(func5(10, 5))

[결과] 15

result = func5(10, 5)
print(result)

[결과] 15

1-4. 디폴트 매개변수

[함수 작성]

def 함수명(변수1=값, 변수2=값2, ...) :
	함수가 호출되면 실행할 문장
    ...
    return값
[함수 호출]

변수 = 함수명()
변수 = 함수명(값1, 값2, ...)

def func6(num1, num2) :
  return num1 * num2
  
print(func6(10, 30))
[결과] 300

# print(func6(10))
# TypeError: func6() missing 1 required positional argument: 'num2'
# print(func6())
# TypeError: func6() missing 2 required positional arguments: 'num1' and 'num2'
def func6(num1 = 1, num2 = 2) :
  return num1 + num2
  
print(func6(10, 3))
print(func6(10))
print(func6())

[결과]
13
12
3

1-5. 매개변수의 개수가 가변적인 함수

[함수 작성]

def 함수명(*변수) :
	함수가 호출되면 실행할 문장
    ...
    return값
[함수 호출]

변수 = 함수명(값1)
변수 = 함수명(값1, 값2, ...)

📌 매개변수는 함수 안에서 튜플 형태로 사용


def func7(*args) :
  print(args)
  result = 0
  for i in args :
    result += i
  return result
  
print(func7(10))
print(func7(10, 20, 30, 40, 50, 70))

[결과]
(10,)
10
(10, 20, 30, 40, 50, 70)
220

1-6. 매개변수를 딕셔너리 구조로 전달받는 함수

[함수 작성]

def 함수명(**변수) :
	함수가 호출되면 실행할 문장
    ...
    return값
[함수 호출]

변수 = 함수명(변수1=값1, 변수2=값2, ...)

def func8(**args) :
  return args
  
user = func8(userid = 'admin', name = '김자바', age = 20)
print(user)

[결과]
{'userid': 'admin', 'name': '김자바', 'age': 20}

1-7. 리턴값이 여러개인 함수

[함수 작성]

def 함수명(변수1, 변수2, ...) :
	함수가 호출되면 실행할 문장
    ...
    return 값1, 값2, ...
[함수 호출]
>
변수1, 변수2, ... = 함수명(값1, 값2, ...)

def func9(num1, num2) :
  return num1 + num2, num1 - num2, num1 * num2, num1/num2
  
result1, result2, result3, result4 = func9(10, 3)
print(result1, result2, result3, result4)

[결과]
13 7 30 3.3333333333333335
  • 특정값 하나만 알고 싶을 땐?
_,_,result1,_ = func9(10, 3)
print(result1)

[결과] 30

📝 문제

데이터 90, 80, 50, 100, 70을 매개변수로 전달해서 최대값, 최소값을 출력하는 함수를 만들어보자.
(단, return을 사용, 내장함수를 사용하지 않고 최대값/최소값을 한번에 return하는 함수를 만들어보자)

def func10(*data) :
  max = data[0]
  min = data[0]

  for i in data :
    if i > max :
      max = i
    if i < min :
      min = i

  return max, min
  
max, min = func10(90, 80, 50, 100, 70)
print('최대값 : ', max)
print('최소값 : ', min)

[결과]
최대값 : 100
최소값 : 50

0개의 댓글