Python #2

jjewqm·2019년 11월 19일
0

Python

목록 보기
2/7
post-thumbnail

default value

함수 인자에 기본값을 지정해 입력값이 없어도 지정된 인자 값이 나오게 할 수 있다.

def say_hello(name="Ozil"):
  print("hello", name)

say_hello() # hello, Ozil
say_hello("aresen") # hello, aresen 

default value 주의 사항

 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

profile
디지털 포렌식에 관심이 많습니다. 글쓰기를 좋아합니다.

0개의 댓글