파이썬 중급 6일차(1)

김영목·2021년 8월 8일
0

파이썬중급

목록 보기
11/18

1교시 : 일급함수에 대해서!

본격적인 내용에 들어가기 앞서 일급함수가 무엇인지 알아보자.

일급함수란 ???

  1. 변수 할당 가능
  2. 인자로 사용할 수 있다.
  3. 함수 결과 반환 가능

from functools import partial
from operator import mul
from inspect import signature
from operator import add
from functools import reduce

함수를 하나 예로 들어보자. 
아래의 내용은 5!를 계산하는 함수이다. 

def factorial(n) :
	'''n -> int'''
    	if n <= 1 :
        	return '1보다 큰 수를 입력해주세요'
        else :
        	return n * factorial(n-1)

class A :
	pass
    

a = factorial

print(a(20)) = 2432902008176640000

다음처럼 일급함수는 변수에 할당해서 사용가능하다.

print(dir(a))
print(set(sorted(dir(a))))

# sorted vs sort

sorted : 새로운 객체을 생성하면서 정령
sort : 기존 객체를 정렬

key = len/ lambda or reverse=True/False

# map과 지능형 리스트를 활용한 연습

my_try = factorial

print(my_try(20))

print(map(my_try, range(1,21)))
print(list(map(my_try, range(1,21))))
map함수 자체가 list에 대해서 연산을 하는 함수이기 때문에 list(map~~형태의 연산이 자주 쓰인다. 

만약 1~5중 홀수만 연산하고 싶다면??

a. print('filter', list(map(my_try, filter(lamdba: x : x % 2, range(1,6))))

b. print([my_try(x) for x in range(1,6) if x % 2])


# reduce와 callable에 대한 이해

reduce함수는 재귀적인 특징을 가지고 있다.

예를 들어 

print(reduce(lambda x,y : x + y, range(1, 6)))
정답은 21이 나온다. 이것은 reduce함수의 특징때문이다. 1+2 = 3이 나오고 여기서 3을 기억해서 다시 함수로 돌아가 3+3 = 6 그리고 또 다시 6 + 4 그리고 10 + 5 마지막으로 15 + 6 = 21
이런 방법으로 돌고 돌아 결과를 만들어내는 것이 reduce함수의 특징이다.

callable이란?????
메소드 형태로 출력이 가능한지 확인하는 역활을 한다.
해당 callable 연산자를 사용하면 이것디 메소드 형태로 출력이 가능한지 bool값으로 반환해준다.

예시)

print(callable('a')) = false
print(callable(tupple)) = True
print(callable('a'.split)) = True
profile
안녕하세요 김영목입니다.

0개의 댓글