함수
함수의 구조
함수명, 파라미터, 코드 내용, 함수 설명 독스트링 등으로 구성
>>> def my_function():
... '''이 부분은 독스트링이다.
...
... 무엇을 하는 함수인지,
... 파라미터는 무엇인지,
... 함수의 반환값은 무엇인지 설명한다
... '''
- 위치 파라미터 positioned parameters (==인수)
>>> def positioned(first, second):
... '''순서대로 할당하기'''
... print(f'first:{first}')
... print(f'second:{second}')
...
>>> positioned(1,2)
first:1
second:2
- 키워드 파라미터 keyword parameters (==인수)
>>> def keywords(first=1, second=2):
... '''기본값 할당'''
... print(f'first : {first}')
... print(f'second : {second}')
# 하나만 주면, 첫번째 인수에 적용, 두번째는 기본값으로
>>> keywords(0)
first : 0
second : 2
# 두개를 주면 두 인수를 적용
>>> keywords(3,4)
first : 3
second : 4
# 값을 키워드로 지정해주면, 모두 인수에 적용되고 순서는 상관이 없음
>>> keywords(second= 'one',first='two')
first : two
second : one
- return : 함수에서는 모든 함수가 return을 통해 값을 반환함, 반환값을 정의하지 않았다면 None이 반환
>>> def no_return():
... '''정의된 반환 없음'''
... pass
>>> result = no_return()
>>> print(result)
None
>>> def return_one():
... '''1을 반환'''
... return 1
>>> result = return_one()
>>> print(result)
1
객체 함수 **
함수는 그자체로 객체이다. 따라서 함수를 주고받거나 자료 구조에 저장하는 것이 가능. 아래처럼 2개의 함수를 정의해서 리스트로 만들고 리스트를 순회하며 함수 호출 가능
# 함수 1 : double 함수
>>> def double(input):
... '''입력값의 2배'''
... return input*2
>>> double
<function double at 0x10c358f40>
>>> type(double)
<class 'function'>
# 함수 2 : triple 함수
>>> def triple(input):
... '''입력값의 3배'''
... return input*3
>>> triple
<function triple at 0x10c358fe0>
# 함수 1, 2를 리스트화 및 사용
>>> functions = [double, triple]
>>> for function in functions :
... print(function(3))
6
9
익명 함수
제한적인 함수를 만들때 lambda를 활용해서 이름 없는 함수를 만들 수 있고, 보통 작은 함수를 인수로 사용하는 함수에서 제한적 활용함
- lambda 함수 : 식별자(Identifier) 없이 실행 가능한 함수(Function)
>>> items = [[0,'a',2],[5,'b',0],[2,'c',1]]
# sorted를 하면, 각 하위 목록의 첫째 항목을 기준으로 정렬됨
>>> sorted(items)
[[0, 'a', 2], [2, 'c', 1], [5, 'b', 0]]
# 두번째 항목을 반환하는 메서드를 정의하기
>>> def second(item):
... '''두번째 엔트리 반환'''
... return item[1]
# 두번째 항목 반환 메서드(함수)를 key 파라미터로 넘겨주기 : 두번째 항목을 기준으로 정렬됨
>>> sorted(items, key=second)
[[0, 'a', 2], [5, 'b', 0], [2, 'c', 1]]
- lambda 함수 key 활용
>>> items = [[0,'a',2],[5,'b',0],[2,'c',1]]
# 첫번째 인자 기준 정렬
>>> sorted(items, key=lambda item : item[0])
[[0, 'a', 2], [2, 'c', 1], [5, 'b', 0]]
# 두번째 인자 기준 정렬
>>> sorted(items, key=lambda item : item[1])
[[0, 'a', 2], [5, 'b', 0], [2, 'c', 1]]
# 세번째 인자 기준 정렬
>>> sorted(items, key=lambda item : item[2])
[[5, 'b', 0], [2, 'c', 1], [0, 'a', 2]]
'Dev' 카테고리의 다른 글
[Python] 2. 객체 지향 프로그래밍 (feat. OX 퀴즈 게임) (0) | 2024.05.03 |
---|---|
[Python] 1. 기본 개발 프로그래밍 (feat. 커피머신 프로젝트) (0) | 2024.05.02 |
[코테] 스택 - 짝지어 제거하기 (0) | 2024.04.25 |
[DevOps] 1. DevOps 파이썬 핵심 - 2) 시퀀스 (1) | 2024.04.25 |
[DevOps] 1. DevOps 파이썬 핵심 - 1) 설치, 제어문, 객체 (0) | 2024.04.25 |