Practice makes perfect

[Python] 함수 본문

Anaconda/Python

[Python] 함수

kerpect 2020. 7. 27. 13:30

함수 

: 파이썬은 함수(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 : 기능의 구현을 잠시 보류