Chapter 5 -2 : Python_Functions_2 (기본값, 키워드값, 가변인자, 지역변수와 전역변수)

안녕하세요, 오늘은 파이썬 함수에 대해 저번에 다 기록하지 못한 내용을
2탄으로 마저 작성할까 합니다.
오늘은 파이썬 함수에서 기본값, 키워드값, 가변인자,
그리고 지역변수와 전역변수에 대해 다루어 보겠습니다.
파이썬 함수의 기본값
파이썬 함수에서 기본값이란?
-함수를 호출할 때 인자를 전달하지 않았을 경우 사용되는 값을 말합니다.
예를들어 그전에 공부한 함수의 기본 형태는
def soo(height, weight): 본문
이렇게 매개변수가 두개인 형태에서 함수를 호출할때
꼭 매개변수 둘다 적어줘야 호출이 가능했습니다.
soo(181, 70) 이런식으로 말이죠
그런데 기본값을 설정해 놓으면 꼭 인자값을 전달해 주지 않다도 된다는 것입니다.
예제코드를 보면서 공부해보겠습니다.
def greet(name, message="안녕하세요!"):
print("{0}, {1}".format(name, message))
# 기본값이 있는 매개변수를 사용하는 경우
greet("soo") # "soo, 안녕하세요!" 출력
greet("siu", "반갑습니다!") # "siu, 반갑습니다!" 출력
# 기본값이 없는 매개변수와 기본값이 있는 매개변수를 함께 사용하는 경우
def calculate_total_price(price, quantity=1, tax_rate=0.1):
total = price * quantity * (1 + tax_rate)
return total
# 기본값이 없는 매개변수에 인자를 전달하는 경우
result1 = calculate_total_price(1000, 2) # price=1000, quantity=2, tax_rate=0.1 (기본값)
print(result1) # 2200 출력
# 기본값이 있는 매개변수를 생략하는 경우
result2 = calculate_total_price(500) # price=500 (인자 전달), quantity=1 (기본값), tax_rate=0.1 (기본값)
print(result2) # 550 출력
위의 예제 코드에서 greet() 함수는
name과 message라는 두 개의 매개변수를 가지며,
message 매개변수에는 기본값이 설정되어 있습니다.
이렇게 기본값이 있는 매개변수는
함수를 호출할 때 인자를 전달하지 않아도 됩니다.
또 다른 예제로는 calculate_total_price() 함수가 있는데,
이 함수는 price, quantity, tax_rate라는 매개변수를 가지며,
quantity와 tax_rate 매개변수에는 각각 기본값이 설정되어 있습니다.
이렇게 기본값이 있는 매개변수를 사용하면
함수를 호출할 때 일부 매개변수를 생략할 수 있습니다.
이렇게 파이썬 함수의 기본값을 활용하면
함수 호출 시 매개변수를 유연하게 다룰 수 있습니다.
기본값이 있는 매개변수는 필요한 경우에만 인자를 전달하고,
그렇지 않은 경우에는 기본값을 사용할 수 있습니다.

키워드 값
파이썬 함수에서 키워드값을 사용하면 함수를 호출할 때
매개변수의 이름과 값을 직접 지정할 수 있습니다.
이를 통해 매개변수의 순서에 구애받지 않고 인자를 전달할 수 있습니다.
예제 코드를 통해 이를 확인해보겠습니다
# 함수 정의
def calculate_total_price(price, quantity, discount):
total = price * quantity * (1 - discount)
return total
# 키워드값을 사용하여 함수 호출
total_price1 = calculate_total_price(price=1000, quantity=5, discount=0.1)
print("총 가격 : {}원".format(total_price1))
total_price2 = calculate_total_price(discount=0.2, quantity=3, price=1500)
print("총 가격 : {}원".format(total_price2))
위의 예제 코드에서는 calculate_total_price() 함수를 정의하고
키워드값을 사용하여 함수를 호출하는 방법을 보여줍니다.
함수는 가격(price), 수량(quantity), 할인율(discount)을
매개변수로 받아 총 가격을 계산하여 반환합니다.
첫 번째 예제에서는 calculate_total_price() 함수를 호출할 때
price=1000, quantity=5, discount=0.1과 같이
키워드값을 사용하여 매개변수에 값을 전달합니다.
이렇게 키워드값을 사용하면
매개변수의 순서와는 상관없이 값을 전달할 수 있습니다.
두 번째 예제에서는 매개변수의 순서를 바꾼 상태로 함수를 호출했습니다.
하지만 discount=0.2, quantity=3, price=1500와 같이
키워드값을 사용하여 각각의 매개변수에 값을 전달했습니다.
이렇게 키워드값을 사용하면 매개변수의 순서와는 상관없이
정확히 어떤 값을 어떤 매개변수에 전달할지 지정할 수 있습니다.

가변인자
가변인자는 함수에 임의의 개수의 인자를 전달할 수 있게 해주는 기능입니다.
# 가변인자를 사용하려면 함수 정의 시
매개변수 이름 앞에 `*`을 붙여야 합니다.
이렇게 정의된 가변인자는 함수 내부에서 튜플 형태로 전달됩니다.
이렇게 전달된 튜플은 반복문을 통해 각 원소에 접근할 수 있습니다.
가변인자를 사용하면 함수를 호출할 때
전달하는 인자의 개수가 다를 수 있습니다.
이를 통해 유연하게 함수를 사용할 수 있는 것입니다.
예를 들어, 동일한 함수를 다양한 인자 개수에 대해 호출할 수 있습니다.
def calculate_average(*numbers):
total = sum(numbers)
average = total / len(numbers)
return average
def print_result(name, *scores):
average_score = calculate_average(*scores)
print("이름: {}".format(name))
print("성적:", end=" ")
for score in scores:
print(score, end=" ")
print("\n평균 성적: {:.2f}".format(average_score))
print_result("김철수", 80, 75, 90, 85)
print_result("이영희", 95, 88, 92, 78, 85, 90)
위의 예제 코드에서 *numbers와 *scores가 가변인자로 정의되어 있습니다.
이를 통해 임의의 개수의 인자를 전달할 수 있습니다.
함수 내부에서는 가변인자를 튜플로 처리하고,
반복문을 통해 각 원소에 접근하여 처리할 수 있습니다.
가변인자를 사용하면 함수의 활용성과 유연성을 높일 수 있습니다.
예제코드 풀이는 아래 내용을 참고해 주세요.
- calculate_average(*numbers) 함수:
- *numbers는 임의의 개수의 인자를 받을 수 있는 가변인자입니다.
- 전달된 인자들의 합을 구하고 인자들의 개수로 나눠서 평균값을 계산합니다. - 평균값을 반환합니다. - print_result(name, *scores) 함수:
- name은 이름을 나타내는 인자입니다.
- *scores는 임의의 개수의 성적을 받을 수 있는 가변인자입니다.
- calculate_average(*scores)를 호출하여 성적의 평균값을 계산합니다
- 이름과 성적을 출력하고, 평균 성적을 출력합니다. - print_result("김철수", 80, 75, 90, 85) 호출:
- "김철수"라는 이름과 성적을 전달하여 print_result 함수를 호출합니다.
- 성적의 평균값을 계산하여 출력합니다. - print_result("이영희", 95, 88, 92, 78, 85, 90) 호출:
- "이영희"라는 이름과 성적을 전달하여 print_result 함수를 호출합니다.
- 성적의 평균값을 계산하여 출력합니다.

지역변수와 전역변수
내용이 좀 길어지긴 하는데 여기서 또 끊자니 애매해서
그냥 지역변수와 전역변수까지 다루고 마치도록 하겠습니다.
지역 변수와 전역 변수는 파이썬에서 변수의 유효 범위를 나타내는 개념입니다.
- 지역 변수: 함수 내에서 정의된 변수로 해당 함수 내에서만 접근할 수 있습니다. 다른 함수나 전역 영역에서는 해당 변수에 접근할 수 없습니다.
- 전역 변수: 함수 외부에서 정의된 변수로 프로그램 전체에서 접근할 수 있습니다. 함수 내에서도 global 키워드를 사용하여 전역 변수에 접근할 수 있습니다.
# 전역 변수
total_money = 5000
def add_money(amount):
# 지역 변수
global total_money
total_money += amount
def spend_money(amount):
# 지역 변수
global total_money
if total_money >= amount:
total_money -= amount
else:
print("잔액이 부족합니다.")
print("현재 잔액: ${}".format(total_money))
add_money(1000)
print("추가된 후 잔액: ${}".format(total_money))
spend_money(2000)
print("사용 후 잔액: ${}".format(total_money))
add_money 함수는 amount라는 값을 매개변수로 받아와서
전역 변수 total_money에 더합니다.
변수 total_money는 global 키워드를 사용하여
전역 변수로 선언되었습니다.
spend_money 함수는 amount라는 값을 매개변수로 받아와서
전역 변수 total_money에서 amount를 차감합니다.
만약 total_money가 amount보다 크거나 같으면 금액을 차감하고,
그렇지 않으면 "잔액이 부족합니다."라는 메시지를 출력합니다.
print("현재 잔액: ${}".format(total_money))는 현재 잔액을 출력합니다.
이때 total_money는 전역 변수로 선언되어 있어서
프로그램 전체에서 접근할 수 있습니다.
add_money(1000)은 add_money 함수를 호출하여 1000을 추가합니다.
print("추가된 후 잔액: ${}".format(total_money))는
추가된 후의 잔액을 출력합니다.
spend_money(2000)은 spend_money 함수를 호출하여
2000을 사용합니다.
print("사용 후 잔액: ${}".format(total_money))는
사용 후의 잔액을 출력합니다.

이렇게 코드를 실행하면
현재 잔액, 추가된 후 잔액, 사용 후 잔액이 차례대로 출력됩니다.
자, 오늘은 파이썬의 함수에서 기본값, 키워드값, 가변인자,
그리고 지역변수와 전역변수를 다루어 보았습니다.
global 사용이 조금 미숙하긴 하지만 연습해봐야겠네요ㅎ
오늘은 여기까지로 마무리하고 다음에 또 포스팅하겠습니다:)
출처 : https://youtu.be/kWiCuklohdY
필자는 해당 링크 영상을 통해 학습하였으나,
포스팅 내용 및 설명은 영상과 다를 수 있음을 알립니다.