본문 바로가기
교재 리뷰/뇌를 자극하는 파이썬3

뇌를 자극하는 파이썬3 - 7. 함수로 코드 간추리기

by 펄서까투리 2019. 10. 22.

# 세줄요약 #

1. def 키워드를 사용하여 함수를 정의한 뒤 호출하여 사용하면 결과값을 반환해주며, 함수를 사용하면 코드를 반복되는 코딩을 줄여 전체 코드를 간결하게 작성할 수 있다.

- def: 함수나 메소드를 정의하는 키워드, definition의 약자

#code block#
def function(param):
    """
    codeblock
    """
    return result
    
val = function(param)   # [output]: val = result

- 함수 이름을 쓰면 그 함수가 호출되어 아래 정의된 코드블록을 실행하고, 해당 결과를 반환(return)해준다.

 

2. 매개변수(Parameter): 함수에 입력되는 변수로 함수가 호출되면, 매개변수가 입력되어 코드블록에서 입력된 매개변수 값을 연산하고 해당 결과가 반환되어 나온다.

- 일반적으로 매개변수를 생략하면 에러가 뜨기에 매개변수를 반드시 입력해야 한다.

#code block#

def sum(a, b):
    return a + b
   
sum(1, 2)   # [output]: 3   
sum()   # [output]: Error!

- 기본값 매개변수: 매개변수 정의 시 미리값을 할당하여 입력을 생략할 수 있다.

#code block#

# 기본값 매개변수
def print_loop(text, count = 1):
    for i in range(count):
        print(text)
        
print_loop('hello') # count를 생략하여도 1이 기본값으로 저장
# [output]: 안녕하세요

print_loop('hello', 2)
# [output]: 안녕하세요
# [output]: 안녕하세요

- 키워드 매개변수: 호출자가 매개변수를 일일이 지정하여 데이터를 입력

#code block#

def print_info(name, position='researcher'):
    print('name = {}'.format(name))
    print('position = {}'.format(position))
    
print_info(name='펄서까투리') # position 생략 시 기본값은 'researcher'
# [output]: name = 펄서까투리
# [output]: position = researcher

print_info(name='펄서까투리', position='manager') # position 키워드를 불러와서 새로 지정
# [output]: name = 펄서까투리
# [output]: position = manager

- 가변 매개변수: 상황에 따라 변수의 수를 변화시킬 수 있다.

  • 매개변수 앞에 *를 붙이면 가변 매개변수로 지정
  • *를 이용하여 정의된 가변 매개변수는 튜플
  • 따라서 가변 매개변수는 순서열처럼 동작함
#code block#

def merge_string(*text_list):
    result = ''
    for s in text_list:
        result = result +s
    return result
    
    
merge_string('펄서까투리의 ', '세줄요약 ', '블로그')
# [output]: 펄서까투리의 세줄요약 블로그

- 변수의 범위(scope)

  • 지역변수(Local Variable): 함수 안에서 만든 변수는 함수 안에서만 살아있다가 함수 코드의 실행이 종료되면 그 생명을 다함.
  • 전역변수(Global Variable): 프로그램 전체를 유효 범위로 가지는 변수, global 키워드를 사용하여 지정
#code block#

def scope_test():
    a = 1
    global b
    b = 1
    print('a = {} , b = {}'.format(a, b))
    
    
a = 0
b = 0
scope_test()
print('a =', a, ', b =', b)

# [output]: a = 1 , b = 1
# [output]: a = 0 , b = 1

 

3. return: 함수가 결과값을 반환하는데 사용하며 return을 어떻게 사용하느냐에 따라 함수의 결과값 제공방식이 달라진다.

- return문에 결과값을 담아 실행: 함수 종료 후 저장된 결과값으로 반환

#code block#

def my_abs(num):
    if num < 0:
        return num * -1
    elif num > 0:
        return num
        
        
a = my_abs(-1)   # [ouput]: a => 1
b = my_abs(1)   # [ouput]: b => 1
c = my_abs(0)   # [ouput]: type(c) => NoneType 
# * return을 실행하지 못하고 함수가 종료되면 함수는 None을 반환

- return문에 아무 결과도 넣지 않고 실행: 함수가 즉시 종료

#code block#

def print_range(num):
    for i in range(num):
        print(i+1, end=' ')
        if i+1 == 5:
            return
            
 
print_range(3)
# [output]: 1 2 3
print_range(8)
# [output]: 1 2 3 4 5

- return문을 생략: 함수의 모든 코드 실행 후 종료

#code block#

def print_some():
    print('hello', end=' ')
    print('my', end=' ')
    print('world', end=' ')
    

print_some()
# [output]: hello my world

 

* 출처: 뇌를 자극하는 파이썬3 / 박상현 / 한빛미디어

728x90
728x90

댓글