목차

    함수

    함수 사용방법

    • 함수명(입력인수) : 사용하고자 하는 함수를 함수명으로 호출 후 인수가 필요한 함수일 경우 인수값을 사용

    수학함수와 python 함수의 비교

    • 수학함수 표현
    • f(x) = x + 1
    • pyhon에서 함수 정의[indent]수행문장
    • [indent]return 값
    • def 함수명(입력인수):
    • def : 함수를 지칭하는 키워드
    • 함수명 : 함수를 호출하기 위해 사용하는 명시적 변수
    • 입력인수 : 수학 함수식에서 f(x)표현시 함수에 사용되는 x값
    • return 값 : 함수를 수행 후 반환되는 값

    함수를 만드는 이유

    • 함수는 임의의 값을 받아 문장을 수행한 후 결과값을 출력하므로 함수를 이용하면 임의의 값에 대하여 재활용하기 위해 만든다.

    함수 모양

    def FuncName(var1, var2.. ) :

     """ 독스트링(Documentation String,Docstrings)"""  
    
     코드  
    
     return
    • def
    • : Define의 약자로써 선언한다는 의미를 가지고 있다.
    • funcName
    • : 함수의 이름이다.
    • var
      • 매개변수는 함수에서 선언한 개수와 호출시에 넣은 개수가 동일해야한다
    • : 인자값으로써 갯수는 여러개가 들어와도 상관이 없다.
    • 독스트링(Documentation String,Docstrings)
      • """......""" 이와 같이 """로 묶어서 사용한다.
      • 독스트링보다 위에 코드가 있으면 안된다. 즉, 함수의 첫째줄부터 작성되어야한다.
    • : 함수의 설명을 작성하는 것이다. (출력과는 무관하다, 주석같은 느낌이다.)
    • return
      • return 뒤에 값이 없다면 , 그냥 함수를 종료시킨다.
    • : return값이 없다면, 적지 않아도 무관하다.

    언패킹 이용하기

    • 리스트 혹은 튜플 앞에 ''를 삽입하여 사용한다.
      • 인자값이 여러개면 언패킹을 이용한다면 편하게 사용 할 수 있다.
        • 간단하게 리스트 혹은 튜플이 인자값과 1 : 1 맵핑이 된다고 생각하면된다.
        • 그럼으로 리스트 혹은 튜플의 길이가 인자값의 갯수와 동일해야한다.
        • Func(*리스트)
        • Func(*튜플)
      • 가변인수
        • def FuncName(*매개변수):
        • 코드
        • 가변인수 즉 길이가 변하는 리스트 혹은 튜플따위를 인자값으로 받을 때 사용한다.
        • 가변인수와 고정인수를 동시에 사용한다면, 고정인수, 가변인수 순으로 사용해야한다.
          • def FuncName(고정인수 , *가변인수):
      • 위치 인수
        • def FuncName(**매개변수):
        • 코드
        • Func(**딕셔너리)
        • *_를 두번 하는 이유는 *한번만 사용하면 key값을 반환하고, *_을 사용하면 value를 반환한다.
      • 초기값 설정
        • def FuncName(매개변수 = value) :
          • 위와같이 선언한다면, 매개변수의 Default 값이 value가 들어간다.
          • 초기값을 설정한 변수들의 순서는 뒤로가야한다.
            • def FuncName(var1 , var2 = value): <- 가능
            • def FuncName(var1 = value , var2): <- 불가능
    • *

    재귀함수

    • 정의
      • 함수가 자기자신을 다시 호출하는 것이다.
      • 생성시에 탈출조건을 잘 정해줘야한다.
        • 탈출조건을 잘못 설정하면 무한루프가 된다.(프로그램이 끝나지 않음)
    • 모양
      • def recursiveFunc() :
        코드  
    recursiveFunc()  

    람다식

    • 람다식 ( 익명 함수 ) 이란?
      • 함수를 간단히 식 형태로 되어있어 람다 표현식 ( lambda expression ) 이라고 부른다.
      • 즉 return문하나 만 있는 함수라고 생각하면 편하다.
      • 람다식 안에서 새로운 변수생성 은 불가하다.
        • 람다식 외부에 있는 변수는 사용할 수 있다.
      • 주로 함수의 인수로 넣을떄 사용한다.
      • 아래 함수와 람다식은 같은 기능을 처리한다.
    def plus(x):
        return x+1
    lambda x : x + 1

    결과값 : <function main.(x)>

    사용방법

    • lambda 매개변수 : 식
      • 람다식을 변수에 할당시키면 재사용이 가능하다
      • LambdaVar = Lambda(람다식)
    (lambda x : x +1)(1)

    결과값 : 2

    Sequence Type 사용하기

    • (lambda 매개변수 : 식)(인수들)
      • 변수에 할당하지 않고 바로 사용시에 사용한다.
      • 한줄 계산시에 많이 사용한다.
      • 만약 인수를 list와 같은 Sequence Types으로 받는다면, 각각에 값처리가 된다.
    print(list( map (plus,[1,2,3]))) # plus는 위에 함수로 선언함.
    print(list( map ( lambda x : x + 1 ,[1,2,3] ) ))

    결과값 : [2, 3, 4], [2, 3, 4]

    람다에 조건문 삽입하기

    • lambda 매개변수 : 식1 if 조건식 else 식2
      • 조건식이 True면 식1, False면 식2를 반환한다.
    • IF를 사용하였다면 반드시 ELSE를 사용해야한다
    nums = [1,2,3,4,5,6,7,8,9,10]
    list(map(lambda x : -1 if x % 2  else x , nums))

    결과값 : [-1, 2, -1, 4, -1, 6, -1, 8, -1, 10]

    조건문 안에 조건문 넣기

    • lambda 매개변수 : 식1 if 조건식1 else 식2 if 조건식2 else 식3
      • 조건식이 True면 식1, False면 식2를 반환한다.
    • 물론 이렇게 사용 할 수 있지만, 억지로 람다식을 구현한 느낌이다. 가독성이 떨어짐으로 Def를 이용하여 함수를 생성하여 사용하는 것을 권장한다.
    nums = [1,2,3,4,5,6,7,8,9,10]
    list(map(lambda x : '식1' if x % 3 == 0  else '식2' if x % 2== 0 else '식3' , nums))

    결과값 : ['식3', '식2', '식1', '식2', '식3', '식1', '식3', '식2', '식1', '식2']

    Map을 이용하여 Lambda사용하기

    • list(map(lambda x,y : x*y , 인자1,인자2)
    a = [1,2]
    b = [2,3]
    list(map(lambda x,y : x*y , a,b))

    결과값 : [2, 6]

    Filter을 이용하여 Lambda 사용하기

    • filter(함수, 반복가능한객체)
      • 함수가 True일 떄 객채를 가져온다.
    a = [1,2,3,4,5,6,7,8,9,10]
    list(filter(lambda x : x > 5 and x < 10 , a))

    결과값 : [6, 7, 8, 9]

    '프로그래밍 및 IT > 파이썬 ( Python )' 카테고리의 다른 글

    파이썬( 예외 처리 )_11  (0) 2021.05.14
    파이썬( 클래스 )_10  (0) 2021.05.12
    파이썬(파일 입출력)_08  (0) 2021.05.02
    파이썬(문자열)_07  (0) 2021.04.30
    파이썬(반복문)_06  (0) 2021.04.29

    + Recent posts