함수

백승찬·2020년 11월 1일
0

python

목록 보기
9/10

코드의 재활용성 => 함수

  • 정의하기 (define) : 0개 또는 1개 이상의 매개변수를 갖는다.
  • 호출하기 (call) : 0개 또는 1개 이상의 결과를 얻는다.

함수 정의하기 => def

def "함수이름"(매개변수):
	pass  

인수와 매개변수

  • 함수로 전달한 값을 인수라고 부른다.

  • 인수와 함수를 호출하면 인수의 값이 함수 내에서 해당하는 매개변수에 복사된다.

함수 외부에서는 인수라고 하지만 내부에서는 매개변수라고 한다.

유용한 None

  • None은 아무것도 없다는 것을 뜻하는 파이썬의 특별한 값

불리언 값의 False처럼 보이지만 다른 값을 의미
빠뜨린 빈 값을 구분하기 위해 None을 사용

위치 인수

  • 값을 순서대로 상응하는 매개변수에 복사하는 위치 인수 (positional argument)

매우 일반적이지만 위치 인수의 단점은 각 위치의 의미를 알아야한다

키워드 인수

위치 인수의 혼란을 피하기 위해 매개변수에 상응하는 이름을 인수에 지정

  • 위치 인수와 키워드 인수를 섞어서 쓸 때는 위치 인수가 먼저 와야한다.

기본 매개변수 값 지정

def menu(wine, entree, desert='pudding'):
	return {'wine' : wine, 'entree' : entree, 'desert' : desert}

>>> menu('chardonny', 'chicken')
{'wine' : chardonny, 'entree' : chicken, 'desert' : desert }

desert 인수를 입력하면 기본값 대신 입력한 인수(doughnut)가 쓰인다

파이썬 기술 면접 등장 예제

기본 매개변수값을 지정한 경우

def buggy(arg, result=[]):
	result.append(arg)
    print(result)
    
>>> buggy('a')
['a']

>>> buggy('b')
['a','b']

지정 안한 경우

def works(arg):
	result=[]
    result.append(arg)
    return result
    
>>> works('a')
['a']

>>> works('b')
['b']

내부 함수

def outter(a, b):
    def inner(c,d):
    	return c+d
    return inner(a,b)
    
>>> outter(4,7)
11
  • 내부 함수 = 반복문이나 코드 중복을 피하고자 또 다른 함수내에 어떤 복잡한 작업을 한번 이상 수행 할때 유용하게 사용

클로저

  • 클로저 = 다른 함수에 의해 동적으로 생성, 외부 함수ㅜ로부터 생성된 변수값을 변경하고 저장 가능 함수

익명 함수 : lambda

def edit_story(words, func):
    for word in word:
    	print(func(word))
        
        
>>> stairs = ['thud', 'meow', 'thud', 'hiss']

def enliven(word):
   return word.capitalize() + '!'
   
edit_story(stairs, enliven)

Thud!
Meow!
Thud!
Hiss!

람다를 사용

edit_story(stairs, lambda word: word.capitalize() + '!'

제네레이터

  • 제네레이터 = 시퀀스를 생성하는 객체

제네레이터 = 한 번만 순회 할수있다. 리스트, 셋, 문자열, 딕셔너리는 메모리에 존재
제네레이터 = 해당 값을 즉석에서 생성하고 이터레이터를 통해 한 번에 하나씩만 전달
제네레이터 = 모든 값을 기억하지 않으므로 제네레이터는 다시 돌릴 수 없다.

데커레이터

  • 가끔 코드를 바꾸지 않고 사용하고 있는 함수를 수정하고 싶을 대
    ex) 함수에 전달된 인수를 보기 위해 디버깅 문을 추가

Decorator => 하나의 함수를 취해서 또 다른 함수를 반환하는 함수

재귀 함수

  • 자기 자신을 호출하는 함수

0개의 댓글