2025.03.14(금) 슈퍼코딩 AI/DATA Day 16 일일보고 - 기본 문법 : 함수

Honey_Bunny·2025년 3월 14일

슈퍼코딩

목록 보기
16/23

기본 문법_ 함수


함수 정의 및 활용


함수란?

  • 파이썬에서 함수란 반복되는 자주 사용하는 기능 또는 특정 기능을 별도로 구분하여 사용하고 싶을 때 별도로 그러한 기능을 지정하고 필요할 때 불러다 쓰기 위해 함수를 사용한다
  • 예전에는 return 값의 유무에 따라 return값이 없이 특정 기능을 수행하는 것을 서브루틴(sub_routine)이라 부르고 return 값이 있는 것을 함수(function)이라고 불렀으나, 지금은 구분없이 모두 함수(Function)이라고 지칭하는 추세이다
  • 파이썬에서 함수의 기본 구조는 다음과 같다
def 함수명([매개변수[=초기값], .....]):
     수행할 문장1
     수행할 문장2
     ....
     ....
     ....
     return [결과값]
  • def를 사용하여 함수를 지정한다
  • 함수명은 변수처럼 임으로 지정하여 사용 할 수 있다
  • 매개변수는 생략될 수 있다
  • 결값은 생략될 수 있으며 이때 결과 값은 None이 된다
  • return 문이 생략될 수 있으며 이때에도 결과 값은 None이 된다
  • 함수 안에 return 문이 여러번 나와도 상관 없으며, return 문을 만나면 함수가 종료된다

기본적인 함수 사용의 예


함수 사용의 예

def Seperator():
  print("-"*10)
def MyPrint(data):
  print(f"결과 값은 {data} 입니다")
MyPrint(1234)
Seperator()
출력 - 결과 값은 1234 입니다 
MyPrint("Hello")
Seperator()
출력 - 결과 값은 Hello 입니다
Myprint(3.14)
출력 - 결과 값은 3.14 입니다

리턴 값이 있는 함수


문장에서 hide_name_list에 포함된 이름을 **로 바꿔주는 함수

def HideNames(text, hide_name_list):
  for hide_name in hide_name_list:
    text = text.replace(hide_name, "**")
  return text
article1 = """
트럼프는 이날 오후 가수 리 그린우드의 ‘갓 블레스 USA’ 노래에 맞춰 객석에서 무대로 걸어 내려왔다.
“우리가 이겼다”는 말로 연설을 시작했다. 트럼프는 “지난 4년 간의 내리막길이 마무리되고 미국의
자존심과 위엄, 힘을 되찾을 것”이라며 “불법 이민자에 의한 국경 침범을 멈추고 도시의 잃어버린 법과
질서를 되찾을 것”이라고 했다. “좌파의 ‘워크(woke·깨어 있음)’ 이데올로기를 우리 정부와 군에서 없애
 미국을 다시 위대하게 만들 것”이라고도 했다. 트럼프는 이날 피트 헤그세스 국방장관, 털시 개버드
 국가정보국(DNI) 국장, 로버트 F. 케네디 주니어 보건복지부 장관 등 의회 인준 과정에서 논란에
 휘말린 후보자들을 일일이 호명하며 힘을 실어줬다.
"""
article2 = """
4년 전인 2021년 조 바이든 대통령의 취임식과 특별 공연에서는 코로나 팬데믹 상황에서도 레이디 가가,
제니퍼 로페즈, 저스틴 팀버레이크 등 톱스타들이 축하 공연을 했다. 첫 흑인 미 대통령으로 세계의
관심이 집중됐던 2009년 버락 오바마 대통령의 1기 취임식에서도 비욘세, U2, 스티비 원더 등 당대
최고 가수들이 총출동했다. 전반적으로 유색인종 비율이 높았고 음악 장르도 록, 리듬앤블루스,
라틴 팝 등으로 다양했다
"""
masked_article1 = HideNames(article1, ["리 그린우드", "피트 헤그세스", "털시 개버드", "로버트 F. 케네디 주니어"])
print(masked_article1)
출력 : 트럼프는 이날 오후 가수 **의 ‘갓 블레스 USA’ 노래에 맞춰 객석에서 무대로 걸어 내려왔다.
“우리가 이겼다”는 말로 연설을 시작했다. 
트럼프는 “지난 4년 간의 내리막길이 마무리되고 미국의 자존심과 위엄, 힘을 되찾을 것”이라며 
“불법 이민자에 의한 국경 침범을 멈추고 도시의 잃어버린 법과 질서를 되찾을 것”이라고 했다. 
“좌파의 ‘워크(woke·깨어 있음)’ 이데올로기를 우리 정부와 군에서 없애 
미국을 다시 위대하게 만들 것”이라고도 했다. 
트럼프는 이날 ** 국방장관, **국가정보국(DNI) 국장, ** 보건복지부 장관 등 
의회 인준 과정에서 논란에 휘말린 후보자들을 일일이 호명하며 힘을 실어줬다.
masked_article2 = HideNames(article2, ["레이디 가가", "제니퍼 로페즈", "저스틴 팀버레이크"])
print(masked_article2)
출력 : 4년 전인 2021년 조 바이든 대통령의 취임식과 특별 공연에서는 코로나 팬데믹 상황에서도 **, **, ** 등 톱스타들이 축하 공연을 했다. 
첫 흑인 미 대통령으로 세계의 관심이 집중됐던 
2009년 버락 오바마 대통령의 1기 취임식에서도 비욘세, U2, 스티비 원더 등 당대 최고 가수들이 총출동했다. 
전반적으로 유색인종 비율이 높았고 음악 장르도 록, 리듬앤블루스, 라틴 팝 등으로 다양했다

return 값이 있는 함수 예 2
함수가 자기스스로를 부르는 것을 재귀함수라고 한다

def factorial(n):
  if n == 0:
    return 1
  else:
    return n * factorial(n-1)
print("5! =",factorial(5))
print("10! =", factorial(10))
출력 : 5! = 120
출력 : 10! = 3628800

여러 값 return 하기


여러 return 값이 있는 함수 예

def LargestSmallest(data):
  largest = data[0]
  smallest = data[0]
  for i in data:
    if i > largest:
      largest = i
    elif i < smallest:
      smallest = i
  return largest, smallest
largest, smallest = LargestSmallest([1818,0,-838,388,47,382,0,3849])
print("Largest:", largest)
print("Smallest:", smallest)
print("-"*10)
result = LargestSmallest([1818,0,-838,388,47,382,0,3849])
print("Largest:", result[0])
print("Smallest:", result[1])

위에서

return largest, smallest

는 다음과 같이 해도 된다.

return [largest, smallest]

또는

return (largest, smallest)
출력 : Largest: 3849
출력 : Smallest: -838
출력 : ----------
출력 : Largest: 3849
출력 : Smallest: -838

매개변수 지정하여 호출하기

함수를 호출할 때 매개변수를 지정할 수 있다.

  • 아래 함수는 a,b를 입력 받아 나누기의 몫과 나머지를 return하는 함수이다.

def div(a, b):
  floor_result = a // b
  remainder = a % b
  return floor_result, remainder
  • 이 함수는를 호출 할때 다음과 같이 매개변수를 지정하여 사용할 수 있다.
>> result, remainder = div(a=20, b=3)
>> print(result, remainder)
6 2
  • 순서에 상관 없이 매개변수를 사용할 수 있다.
>> result = div(b=3, a=30)  # b에 3, a에 20을 전달
>> print(result)
-2
def div(a, b):
  floor_result = a // b
  remainder = a % b
  return floor_result, remainder

호출 방법 1

result, remainder = div(20, 3)
print(result, remainder)
출력 : 6 2

호출 방법 2

result, remainder = div(a=20, b=3)
print(result, remainder)
출력 : 6 2

호출 방법 3

result, remainder = div(b=3, a=20)
print(result, remainder)
출력 : 6 2

매개변수에 default 값 할당 하기


매개변수에 default 값 할당하기 예 1

def greet(name=None, message="안녕하세요"):
  if name == None:
    return f"{message}!"
  else:
    return f"{message}, {name}님!"

함수 호출

print(greet())
print(greet("홍길동"))
print(greet("홍길동", "잘 지내셨어요"))
print(greet(message="반갑습니다"))
print(greet(name="홍길동"))
print(greet("홍길동", message="반갑습니다"))
print(greet(name="홍길동", message="오랫만이네요"))
print(greet(message="오랫만이네요", name="홍길동"))
출력 : 안녕하세요!
출력 : 안녕하세요, 홍길동님!
출력 : 잘 지내셨어요, 홍길동님!
출력 : 반갑습니다!
출력 : 안녕하세요, 홍길동님!
출력 : 반갑습니다, 홍길동님!
출력 : 오랫만이네요, 홍길동님!
출력 : 오랫만이네요, 홍길동님!

로그 찍기

def log_message(message, level="INFO"):
    print(f"[{level}] {message}")

함수 호출

log_message("System started")            # 출력: [INFO] System started
log_message("Disk space low", "WARNING") # 출력: [WARNING] Disk space low
출력 : [INFO] System started
출력 : [WARNING] Disk space low

입력값의 갯수를 모를때, *args


여러개의 값을 입력 값으로 받을 수 있다

def add_numbers(*args):
  result = 0
  for num in args:
    result += num
  return result

함수 호출

print(add_numbers(1, 2, 3, 4, 5))
print(add_numbers(10, 20, 30))
print(add_numbers())
출력 : 15
출력 : 60
출력 : 0
  • 이렇게 *args로 받은 입력값은 튜플 자료형 이다

여러개의 입력 값을 받는 함수의 입력값 type

def print_args(*args):
  print(type(args), args)

함수 호출

print_args()
print_args(1, 2, 3, 4, 5)
출력 : <class 'tuple'> ()
출력 : <class 'tuple'> (1, 2, 3, 4, 5)

키워드가 있는 입력값, **kargs

  • **kargs 로 받은 입력값은 사전(dict) 자료형 이다

정해지지 않은 입력값을 키워드로 받기

def print_kargs(**kargs):
  print(type(kargs), kargs)

함수 호출

print_kargs()
print_kargs(name="홍길동", age=30, city="서울")
출력 : <class 'dict'> {}
출력 : <class 'dict'> {'name': '홍길동', 'age': 30, 'city': '서울'}
def log_event(event, **kwargs):
    print(f"Event: {event}")
    for key, value in kwargs.items():
        print(f"  {key}: {value}")

함수 호출

log_event("User Login", username="john_doe", ip="192.168.1.1", status="success")
log_event("User", username="john_doe", ip="192.168.1.1", status="success")
출력 - Event: User Login
출력 - username: john_doe
출력 - ip: 192.168.1.1
출력 - status: success
출력 - Event: User
출력 - username: john_doe
출력 - ip: 192.168.1.1
출력 - status: success
profile
현재 : C# WPF 개발자 / 목표 : AI 의료 영상 분석 연구원

0개의 댓글