Python - Functions

jinatra·2021년 7월 14일
0

Functions


Defining a Function

def function_name():

함수의 정의 및 호출

  • def → function header. 함수를 시작하고자 할 때 사용
  • function_name → snake_case 형식으로 함수명 지정
  • ( ) → parameter 기입
  • : → function header의 종료 선언
def player_of_the_match():
    print('Thomas Partey')
    
 # Output: Thomas Partey

Calling a Function

function_name()

함수를 출력하고자할 때에는 별도의 작업 없이 함수명만 기입

def player_of_the_match():
    print('Thomas Partey')

player_of_the_match()

# Output: Thomas partey

Whitespace & Execution Flow

출력을 하고자할 때에 들여쓰기에 주의

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

Parameters & Arguments (매개변수 & 인자)

parameter를 통해 함수의 입력값을 정의하고, argument를 통해 함수 호출 시 출력

  • Parameter → 함수에 입력으로 전달된 값을 받는 변수
  • 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!

# name → parameter (매개변수)
# Tierny → argument (인자)

Multiple Parameters

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

Types of Arguments

  • Positional arguments (위치 인자) → 함수에서 정의한 위치에 대입되는 인자
  • Keyword arguments (키워드 인자) → 순서 필요 없이 기입된 값을 함수에 전달하는 인자
  • Default arguments (기본 인자) → 기본값이 설정되는 인자
# 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에 새로운 값을 덮어씌울 수 있다

Built-in Functions vs User Defined Functions

  • Built-in Functions → 내장된 함수 (print(), max(), len() 등..)
  • User Defined Functions → 사용자 정의 함수

Variable Access

함수의 바깥에서 정의된 변수는 함수 내부에서도 사용 가능
허나 반대로, 함수 내부에서 정의된 변수는 함수 내부에서만 유효

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에선 사용할 수 없다.

Returns

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

Multiple Returns

함수 내 다수의 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




Take Away

return 정의

말그대로 '반환', '저장'이라는 의미(느낌)를 항상 숙지해둬야 할 것 같다.
'돌려받는다' 라는 영어적 의미가 무의식적으로 내 머릿속에 있는거 같아 항상 무언가가 산출되어야만 된다는 식의 곡해된 개념이 있어 빠르게 바로잡아야겠다..


다수의 return

위와 비슷하게, 하나의 function안에 다수의 return값을 지정하였다면,
추후 return값을 변수를 통해 불러낼 때에도 항상 동일한 개수를 설정해주어야 한다.


variable의 접근성

" 함수 밖에서 지정된 변수는 함수에서 쓰일 수 있지만
함수 안에서 지정된 변수는 함수 안에서만 사용되어야 한다 "

profile
으악

0개의 댓글