def function_name():
함수의 정의 및 호출
def
→ function header. 함수를 시작하고자 할 때 사용function_name
→ snake_case 형식으로 함수명 지정( )
→ parameter 기입:
→ function header의 종료 선언def player_of_the_match():
print('Thomas Partey')
# Output: Thomas Partey
function_name()
함수를 출력하고자할 때에는 별도의 작업 없이 함수명만 기입
def player_of_the_match():
print('Thomas Partey')
player_of_the_match()
# Output: Thomas partey
출력을 하고자할 때에 들여쓰기에 주의
print('Announcement!')
def player_of_the_match():
print('Thomas Partey')
print('Congratularion!')
player_of_the_match()
# Output: Announcement!
# Output: Thomas Partey
# Output: Congratularion!
print('Announcement!')
def player_of_the_match():
print('Thomas Partey')
print('Congratularion!')
player_of_the_match()
# Output: Announcement!
# Output: Congratularion!
# Output: Thomas Partey
parameter를 통해 함수의 입력값을 정의하고, argument를 통해 함수 호출 시 출력
def player_of_the_match(name):
print('Player of the match is... ' + name + '!')
player_of_the_match('Tierny')
# Output: Player of the match is... Tierny!
# name → parameter (매개변수)
# Tierny → argument (인자)
def function_name(parameter1, parameter2):
다수의 parameter 설정 가능 → 함수 호출 시 동일 갯수의 argument 지정
하나의 함수 안 각 parameter간의 관계 정의 가능
def player_of_the_match(name1, name2):
print('Player of the match is... ' + name1 + ' and ' + name2 + '!')
player_of_the_match('Partey', 'Tierny')
# Output: Player of the match is... Partey and Tierny!
def calculate_expenses(plane_ticket_price, car_rental_rate, hotel_rate , trip_time):
car_rental_total = car_rental_rate * trip_time
hotel_total = hotel_rate * trip_time - 10
print(car_rental_total + hotel_total + plane_ticket_price)
calculate_expenses(200, 100, 100, 5)
# Output: 1190
# Positional arguments
def player_of_the_match(name):
print('Player of the match is... ' + name + '!')
player_of_the_match('Tierny')
# Output: Player of the match is... Tierny!
# 지정된 parameter에 지정된 argument 출력
# Keyword arguments
def ticket_price(price, person, discount):
print(price * person - discount)
ticket_price(person = 5, discount = 30, price = 20)
# Output: 70
# parameter 순서에 상관없이 argument 지정
# Default arguments
def ticket_price(price, person, discount = 10):
print(price * person - discount)
ticket_price(20, 5)
ticket_price(20, 5, 20)
# Output: 90
# default argument 생략 가능
# Output: 80
# 때에 따라 default argument에 새로운 값을 덮어씌울 수 있다
print()
, max()
, len()
등..)함수의 바깥에서 정의된 변수는 함수 내부에서도 사용 가능
허나 반대로, 함수 내부에서 정의된 변수는 함수 내부에서만 유효
team_3r = 'Tottenham'
def player_of_the_match(name):
print('Player of the match vs ' + team_3r + ' is ' + name + '!')
player_of_the_match('Tierny')
# Output: Player of the match vs Tottenham is Tierny!
# team_3r 변수가 함수 바깥에서 정의되었으니 함수 내부에서 사용 가능
team_3r = 'Tottenham'
def player_of_the_match(name):
print('Player of the match vs ' + team_3r + ' is ' + name + '!')
team_4r = 'Chelsea'
def manager_of_the_match(manager):
print('manager of the match vs ' + team_4r + ' is ' + manager + '!')
manager_of_the_match('Arteta')
# Output: NameError
# 변수 team_4r이 함수 player_of_the_match 내에서 정의되었으니,
# 함수 manager_of_the_match에선 사용할 수 없다.
return
함수 내에서 정의된 값을 함수 바깥으로 반환
current_budget = 3500.75
def print_remaining_budget(budget):
print("Your remaining budget is: $" + str(budget))
print_remaining_budget(current_budget)
# (budget - expense) 값을 함수 deduct_expense의 반환값으로 지정
def deduct_expense(budget, expense):
return budget - expense
shirt_expense = 9
# new_budget_after_shirt = (current_budget - shirt_expense)
new_budget_after_shirt = deduct_expense(current_budget, shirt_expense)
print_remaining_budget(new_budget_after_shirt)
# Output: Your remaining budget is: $3500.75
# Output: Your remaining budget is: $3491.75
함수 내 다수의 return값 지정 가능
# 함수 내 각각의 변수에 도시명 할당 후 return값 지정
# 현재 함수 top_tourist_locations_italy 안엔 "Rome", "Venice", "Florence"가 존재한다고 생각
def top_tourist_locations_italy():
first = "Rome"
second = "Venice"
third = "Florence"
return first, second, third
# 새로운 변수에 함수 top_tourist_locations_italy()의 return값 각각 할당
most_popular1, most_popular2, most_popular3 = top_tourist_locations_italy()
print(most_popular1)
print(most_popular2)
print(most_popular3)
# Output: Rome
# Output: Venice
# Output: Florence
return
정의말그대로 '반환', '저장'이라는 의미(느낌)를 항상 숙지해둬야 할 것 같다.
'돌려받는다' 라는 영어적 의미가 무의식적으로 내 머릿속에 있는거 같아 항상 무언가가 산출되어야만 된다는 식의 곡해된 개념이 있어 빠르게 바로잡아야겠다..
return
위와 비슷하게, 하나의 function안에 다수의 return값을 지정하였다면,
추후 return값을 변수를 통해 불러낼 때에도 항상 동일한 개수를 설정해주어야 한다.
" 함수 밖에서 지정된 변수는 함수에서 쓰일 수 있지만
함수 안에서 지정된 변수는 함수 안에서만 사용되어야 한다 "