함수
함수란 ?
- 특정한 기능을 하는 코드 묶음
- 가독성이 좋고, 재사용성 , 유지보수에 용이
- 함수의 정의는
def func1():
실행은func1()
- 빌트인 함수 : 파이썬 기본 내장 함수***
- 함수의 리턴 : return을 해줘야 함 / 리턴없으면 타입이 None
1. 함수의 입력
매개변수(parameter) : 함수 정의시 사용하고, 함수 내부에서만 사용됨
인자(argument) : 함수 실행시 전달 인지로 사용, 함수의 입력값
위치인자 : 기본적인 모습
cylinder(r,h)
일때, r과 h에 들어갈 값기본인자(Default Argument) : 아무것도 안넣어도 기본으로 정의된 인자값
def greeting2(name = '익명'):
호출인자가 없으면 디폴트가, 있으면 입력된 값이!- 단!!!! 기본인자 이후에 포지셔널인자를 사용할 수 없음!
- 기본인자를 뒤쪽에 배치하거나, 모두 기본인자화 해줘야됨
- 뭐가 기본인자인지 판단이 어렵기때문에 안그럼 오류
키워드인자 : 직접 변수의 이름으로 특정인자를 전달
greeting(name = '길동', age = 1000)
- 단!!!! 키워드 인자 사용 후 포지셔널 인자 사용 불가! 할거면 다해줘야함!
가변(임의)인자:
def students(*args)
몇개의 인자를 받을 지 모를 경우- 위 인자들은 튜플로 묶임
- 가변인자 뒤에 포지셔널이 올 수 없음! 어디까지가 가변인지 알수 없기 때문!
- 가변인자 다음에는 키워드인자로 사용 가능
- 포지셔널인자 뒤에 가변인자 오는 건 상관없음!
가변 키워드 인자 :
def my_dict(**kwargs):
/my_dict(한국어='안녕', 영어='hi', 독일어='Guten Tag')
- 여러 값이 오고, 그 각각 인자들이 키워드 인자 형태로 받음
def example(text, *args, **kwargs):
이렇게 사용 가능!
2. 함수와 스코프
- 스코프 코드 내부의 공간을 의미
- 전역 스코프(
global scope
): 코드 어디에서든 참조할 수 있는 공간 - 지역 스코프(
local scope
): 함수가 만든 스코프로 함수 내부에서만 참조할 수 있는 공간 - 전역 변수(
global variable
): 전역 스코프에 정의된 변수 - 지역 변수(
local variable
): 로컬 스코프에 정의된 변수
2.1 이름검색 규칙
LEGB Rule
이라고 부르며, 아래와 같은 순서로 이름을 찾아나갑니다.
L
ocal scope: 정의된 함수 : 함수가 실행될 때만 변수가 살아 있음E
nclosed scope: 상위 함수 : 위와 같음G
lobal scope: 함수 밖의 변수 혹은 import된 모듈 : 모듈 호출된, 이름 선언 ~ 종료B
uilt-in scope: 파이썬안에 내장되어 있는 함수 또는 속성 : 파이썬 실행시
3. 재귀함수
자기 자신을 호출하는 함수, 리턴값으로 함수 자체를 넣어줌. 꼭 초기 값이 필요 안그럼 무한 루프
그걸 막기 위해서 최대 재귀루프 1000번이 설정되있음, 넘어가면 종료됨
def factorial(n):
if n == 1:
return 1 # base case
else:
return n * factorial(n-1)
def fib(n):
if n < 2:
return 1
else:
return fib(n-1) + fib(n-2)
반복문과 재귀의 차이
- 재귀로 쓰기 자연스러우면 재귀로 사용
- 반복문에 비해 변수 사용을 줄일 수 있고
- 함수의 가독성이 높음
'Python' 카테고리의 다른 글
Python_05_데이터_구조 (0) | 2021.04.07 |
---|---|
Python_04_예외처리 (0) | 2021.04.06 |
Python_02_제어문 (0) | 2021.04.04 |
Python_01_컨테이너 (0) | 2021.03.30 |
Python_00_기초 문법 (0) | 2021.03.26 |