함수(Function)

2024. 12. 31.·언어/Python

함수(Function): 여러 문장(코드)를 묶어, 특정 로직을 재사용하거나 모듈화 위해 사용

파이썬에선 함수 정의를 위해 def 예약어를 사용하며, 함수 이름 뒤 소괄호 '()' 안에 매개변수(Parameter)를 적을 수 있어요

-----🐢

함수 기본 구조

def 함수이름(매개변수):
	수행할 문장 ~
    return 결과값 #선택 사항(필요시 반환)

return은 함수의 결과(return value)를 호출한 쪽으로 돌려줄 때 사용해요

만약 return문이 없으면 None을 반환합니다

#예시
def add(a, b):
	return a + b
    
result = add(3, 4)
print(result) #7 출력

----🐢-

위치 인자 / 가변 인자

- Positional Arguments: 함수를 호출할 때, 순서대로 매개변수가 채워짐

- Keyword Arguments: 함수를 호출할 때, 매개변수 이름을 직접 지정하여 전달

def greet(name, msg):
    print(f"{name}님, {msg}")

# 위치 매개변수 사용
greet("홍길동", "안녕하세요?")  

# 키워드 매개변수 사용
greet(name="이몽룡", msg="반갑습니다!")
greet(msg="환영합니다!", name="성춘향")

---🐢--

매개 변수

- Non-default value parameter (기본값이 없는 매개변수)

 # 함수를 정의할 때 def 함수이름(매개변수) 처럼 기본값을 지정해 주지 않은 매개변수

 # 함수를 호출할 때는, 이 매개변수에 대응되는 인자(argument) 를 반드시 넘겨줘야

 # 인자를 넘기지 않으면 TypeError가 발생

def greet(name):
    print(f"Hello, {name}!")

# 이때 greet 함수를 호출할 때 'name' 인자를 반드시 넣어야 함
greet("Alice")  # 정상: 출력 -> Hello, Alice!
greet()         # 오류: TypeError: greet() missing 1 required positional argument: 'name'

- Default value parameter (기본값이 있는 매개변수)

 # 함수 정의에서 def 함수이름(매개변수=기본값, ...)처럼, 매개변수에 미리 기본값을 지정해둔 형태

 # 함수를 호출할 때, 해당 매개변수에 인자를 전달하지 않으면 기본값이 사용

 #인자를 넘기면, 넘긴 값이 우선적으로 사용

def greet(name="Guest"):
    print(f"Hello, {name}!")

greet("Alice")  # Hello, Alice!
greet()         # Hello, Guest!  (기본값 "Guest" 사용)

 

🤔: 기본값이 있는 매개변수와 기본값이 없는 매개변수를 같이 사용 가능한가요? 사용 가능하다면 주의 사항이 있을까요?

🐢: 사용 가능합니다! 기본값 없는 매개변수는 반드시 기본값 있는 매개변수보다 앞에 와야 해요. value를 어디에 대입해야할지 몰라 오류가 발생할 수 있기 때문이죠!

--🐢---

*args와 **kwargs

- *args; 가변 (위치) 인자

 # *args는 “위치 인자를 임의의 개수만큼 받겠다” 는 의미

 # 함수 정의 시 매개변수에 *args를 적으면, 해당 함수는 여러 개의 positional argument(위치 인자)를 튜플 형태로 받을 수 있음

def print_numbers(*args):
    print(args)

print_numbers(1, 2, 3)       # (1, 2, 3)
print_numbers(10, 20)        # (10, 20)
print_numbers("a", "b", "c") # ('a', 'b', 'c')

- **kwargs; 가변 키워드 인자

 # **kwargs는 “키워드 인자를 임의의 개수만큼 받겠다” 는 의미

 # 함수 정의 시 매개변수에 **kwargs를 적으면, 여러 개의 keyword argument(키=값 형태)를 딕셔너리 형태로 받을 수 있음

def print_info(**kwargs):
    print(kwargs)

print_info(name="홍길동", age=30)   
# 출력: {'name': '홍길동', 'age': 30}

print_info(city="서울", country="한국", zip_code=12345) 
# 출력: {'city': '서울', 'country': '한국', 'zip_code': 12345}

-🐢----

람다(lambda) 예약어

# 짧은 함수를 간단히 표현할 때 람다(lambda) 사용

add_lambda = lambda x, y: x + y
print(add_lambda(3, 4))  # 7

🐢-----

함수 주의사항

- 함수의 리턴값은 언제나 하나

def add_mul(a, b):
	return a + b, a * b
result = add_mul(3, 4) # result = (7, 12)

result1, result2 = add_mul(3, 4) # result1는 7, result2는 12

- 함수 안에서 선언한 변수는 함수 안에서만 사용하는 '함수만의 변수' 

 : 함수 밖의 변수에 영향 X

 

🤔: 그러면 함수 안에서 함수 밖의 변수를 어떻게 변경하나요?

🐢: 함수에서 return을 사용하거나, global 명령어를 사용하면 됩니다!

# return 사용
a = 1
def func(a):
	a = a + 1
    return a

a = func(a) # func(a)의 리턴값을 함수 밖의 변수 a에 대입
print(a)

# global 명령어 사용
a = 1
def func():
	global a
    a = a + 1

func()
print(a)
저작자표시 비영리 변경금지 (새창열림)

'언어 > Python' 카테고리의 다른 글

패키지(Package)  (2) 2025.01.01
클래스/객체/인스턴스  (0) 2025.01.01
리스트 컴프리헨션  (1) 2024.12.30
딕셔너리/집합/불 자료형, 변수 알아보기  (2) 2024.12.26
문자열 자료형/리스트 알아보기  (1) 2024.12.26
'언어/Python' 카테고리의 다른 글
  • 패키지(Package)
  • 클래스/객체/인스턴스
  • 리스트 컴프리헨션
  • 딕셔너리/집합/불 자료형, 변수 알아보기
우는거북이
우는거북이
  • 우는거북이
    거북이는 울고 있다
    우는거북이
  • 전체
    오늘
    어제
    • 알아보기 (75) N
      • AI (4)
      • 언어 (16)
        • Python (15)
        • C언어 (1)
      • 알고리즘 (7)
      • 백준 (22)
      • 자료구조 (10)
      • 컴퓨터네트워크 (6)
      • 운영체제 (1)
      • 데이터통신 (9) N
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
우는거북이
함수(Function)
상단으로

티스토리툴바