-
Python 함수 심화Python 2022. 7. 6. 11:00
재귀함수
# 자기 스스로 호출하는 함수 def func(count): if count > 0: print(count, '현재') func(count - 1) print('결과', count) func(10)
# 재귀 호출의 단계가 깊어질수록 메모리를 추가적으로 사용하므로 종료조건을 분명히 해야 한다. # 호출할 때 메모리를 사용한다. 메모리를 다른 말로는 Stack이라고도 한다. # 이런 상황에서의 오류를 StackOverFlow라고 한다. # 재귀함수는 어쩔 수 없이 써야하는 부분이 아니라면 추천X def no_idea(): print('나는 아무 생각이 없다.') print('왜냐하면 아무 생각이 없기 때문이다.') no_idea() no_idea()
중첩함수
# 함수 안에 정의된 함수 # nonlocal과 global의 차이점을 알아보기 # 변수 위치를 주의하자 def func1(a): def func2(): nonlocal a a += 1 return a return func2() func1(2)
lambda 함수
# 이름이 없는 한 줄짜리 함수 # lambda 인수 나열: 반환할 내용 # 인수가 없으면 생략 가능 # 람다함수는 다른 함수와 연계할 때 많이 사용한다. lambda x, y: x + y
<function __main__.<lambda>>
def run(func, x): print(func(x)) run(lambda x: x + 1, 1)
내장함수
# 함수를 따로 정의하지 않아도 기본적으로 정의되어 있는 함수들 # 절대값을 반환하는 함수 # 최댓값을 반환하는 함수 # 최솟값을 반환하는 함수 # 자료형이 무엇인지 알려주는 함수 # x의 y제곱을 반환하는 함수
# 반복문에서 정수와 인덱스가 필요할 때 사용하는 함수 # 리스트의 인덱스와 원소 값을 모두 생성 # items()를 연상해주면 좋다. for index, x in enumerate(['a', 'b', 'c', 'd']): print(index) print(x)
# zip(a, b) # 두 개의 리스트를 합쳐서 각 리스트 원소의 쌍을 원소로 가지는 하나의 리스트를 변환 # 호출을 해야 값을 출력 list1 = [1, 2, 3, 4] list2 = [5, 6, 7, 8] result = zip(list1, list2) list(result)
for i, j in zip(list1, list2): print(i, j)
# map(함수, 컬랙션) # lambda 함수와 많이 응용, 이것도 호출해야 한다. # 함수와 컬랙션(list, tuple 등)을 매개변수로 받아 컬렉션의 모든 데이터를 함수의 매개변수로 대입해서 결과를 리턴하는 함수 map(lambda x: x + 1, [1, 2, 3, 4]) for i in map(lambda x: x + 1, [1, 2, 3, 4]): print(i)
# filter # 함수와 컬랙션을 매개변수로 받아 컬랙션의 모든 데이터를 함수의 매개변수로 대입하여 결과가 참인 멤버들을 변환하는 함수 filter(lambda x: x % 2 == 0, [1, 2, 3, 4]) for i in filter(lambda x: x % 2 == 0, [1, 2, 3, 4]): print(i)
2
4
# def calc_many(choice, *args) 함수에서 # choice가 sum이면 합한 결과를 구해서 return # choice가 mul이면 곱한 결과를 구해서 return def calc_many(): # 결과 : 15 print(calc_many('sum', 1, 2, 3, 4, 5)) # 결과 : 120 print(calc_many('mul', 1, 2, 3, 4, 5))
'Python' 카테고리의 다른 글
Python 환경 구축 (0) 2022.07.12 Python 실습 (16) (0) 2022.07.04 Python 실습 (15) (0) 2022.07.04 Python 실습 (14) (0) 2022.07.04 Python 실습 (13) (0) 2022.07.04