함수 인자에 기본값을 지정해 입력값이 없어도 지정된 인자 값이 나오게 할 수 있다.
def say_hello(name="Ozil"):
print("hello", name)
say_hello() # hello, Ozil
say_hello("aresen") # hello, aresen
import time
time.ctime() # Mon Mar 5 14:57:24 2018
time.ctime() # Mon Mar 5 14:57:27 2018
def show_time(now=time.ctime()):
print(now)
show_time() # Mon Mar 5 14:57:52 2018
show_time() # Mon Mar 5 14:57:52 2018
default value
는 함수가 실행될 때가 아닌, 정의된 함수가 처음 평가될 때 사용된다.
실행을 여러번해도 결과값은 변하지 않는다.
def add_book(book_list=[]):
book_list.append('파이썬 베이직')
return book_list
book_list=['Hello, Python', 'Head First Python']
add_book(book_list)
['Hello, Python', 'Head First Python', '파이썬 베이직']
add_book()
['파이썬 베이직']
add_book()
['파이썬 베이직', '파이썬 베이직']
add_book()
['파이썬 베이직', '파이썬 베이직', '파이썬 베이직']
인자에 값을 입력하지 않아 기본값이 누적되어 출력된다.
default value를 mutable한 객체로 했을때 주의가 필요하다.
default value를 여러번 사용하게 될 경우 예상치 않은 결과가 나올 수 있다.
def add_book(book_list=None):
if book_list is None:
book_list =[] # 리스트를 초기화 한다
book_list.append('파이썬 베이직')
return book_list
add_book()
['파이썬 베이직']
add_book()
['파이썬 베이직']
book_list = ['Hello, Python', 'Head First Python']
add_book(book_list)
['Hello, Python', 'Head First Python','파이썬 베이직']
default value를 None으로 주고, None인 경우에만 값을 할당해 해결할 수 있다.
본 글은 노마드 코더의 Python으로 웹 스크래퍼 만들기와 파이썬 기본을 갈고 닦자의 함수인자 챕터를 참고했습니다.
파이썬 - 기본을 갈고 닦자! https://wikidocs.net/16053