함수
: 파이썬은 함수(function)라는 기능을 제공하는데 특정 용도의 코드를 한 곳에 모아 놓은 것을 뜻합니다. 그래서 함수는 처음 한 번만 작성해 놓으면 나중에 필요할 때 계속 불러 쓸 수 있습니다. 예를 들어 지금까지 사용했던 print, input 등도 모두 파이썬에서 미리 만들어 둔 함수입니다.
함수를 사용 장점
- 코드의 용도를 구분할 수 있다.
- 코드를 재사용할 수 있다.
- 실수를 줄일 수 있다.
용어 정리
- 정의(Definition) : 어떤 이름을 가진 코드가 구체적으로 어떻게 동작 하는지를 ‘구체적으로 기술 하는 것’.
- 호출(Call) : 함수를 부르는 행위.
- 호출자(Caller) : 함수를 부르는 코드.
- 반환(Return) : 함수가 호출자에게 결과를 돌려주는 것.
함수 정의하기
: 함수는 def에 함수 이름을 지정하고 ( )(괄호)와 :(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성합니다.
- 기본 형태
def 함수이름():
코드
함수 또한 자신이 영역을 가지는데 이때도 들여쓰기를 통해서 사용합니다.
함수 정의 + 호출
1. 호출과 반환
my_abs( ) 안에 아무 값도 넣지 않기 때문에 error 가 난다.
- 올바른 실행
- 함수의 이름을 출력하면 할당된 주소값 반환
2. 기본값 매개변수(Default Argument Value)
3. 키워드 인자(Keyword Argument)
: 호출자가 매개변수의 이름을 일일이 저장해 데이터를 입합니다.
+ 매개변수 이름으로 저장 가능
- 주의) 매개변수 중 초기화 되어지지 않는 값이 존재 할 때, 값을 전달하지 않으면 error = name 데이터 미전달.
해결) + name 데이터 추가
- 매개변수의 이름으로 접근 할 때는 순서는 중요하지 않음.
4. 가변 매개 변수 (Arbitrary Argument List)
- ( * ) 한개 일때 = tuple
- 개수의 제한을 두지 않는 매개 변수로 전달 받는 형태를 ( * ) 한개 일때, tuple로 합니다. 데이터 자체를 확정지어서 읽어들입니다.
- ( ** ) 두개 일때 = dictionary
key = value 의 형태
주의 ) 일반 매개변수와 ,가변 매개수가 함께 사용할 때는 이름을 같이 넣어서 호출 하면 error
why ? 가능하게 되면 순서를 바꿔도 가능하게 되는 것인데, 가변인자인지 데이터가 잘못들어간 것인지 모호해집니다. 그렇기에 지원하지 않고 error를 냅니다.
주의 ) ( * ) 일때 튜플로 반환 되므로 어떤것이 가변인자고, 일반매개변수 인지 알수 없기 때문에 error 를 냅니다.
단, 정의의 문제는 아닙니다. (정의 가능)
해결) 매개변수의 이름을 넣어서 출력
5. 호출자에게 반환하기 (return)
return
1. 호출자에게 결과 전달
2. 함수 즉시 종료 하고 호출한 쪽으로 이동
함수 즉시 종료 / 호출자에게 결과 전달
(한 함수 안에서 여러 개의 return 배치 가능)
주의) None : 변수는 선언되었지만 아무런 값이 담기지 않고 사용될 경우
* javascript - undefind
반환데이터 없이 '함수 종료' 의 의미로 사용.
반환 결과 없고, 함수 중간에 종료시킬 일도 없을 때, return문 생략 가능
6. 변수의 유효 범위 (scope)
1) 지역변수 O
2) 함수 밖 변수 , 지연변수 X
3) global 변수
: global 키워드: 전역변수, 지역변수의 생성을 막으며, 함수가 호출시 생성시 전체 코드에서 사용하여 변수의 번위를 확대 합니다.
7. 함수를 변수에 담아 사용
- 함수를 변수에 담기
- 서열 / 딕셔너리에도 변수로 담기
- 함수의 매개변수에 함수 전달 가능
- 함수 내에서 함수를 반환
return 키워드를 통해서 함수를 반환 할 수 있도록 해줍니다.
8. 중첩 함수
주의 ) 중첩 함수는 외부에서 호출 불가능
- pass : 기능의 구현을 잠시 보류
'Anaconda > Python' 카테고리의 다른 글
[Python] 파이참(PyCharm) 다운로드 (0) | 2020.07.28 |
---|---|
[Python] 모듈(Module) & 패키지(Package) - in PyCharm (0) | 2020.07.28 |
[Python] 반복문 (while, for) (0) | 2020.07.27 |
[Python] 조건문 (0) | 2020.07.27 |
[Python] 튜플(Tuple) , 딕셔너리(Dictionary) (0) | 2020.07.24 |