(함수)
- 파이썬에서는 함수나 메소드를 '정의'할 때 definition을 줄인 키워드인 def를 사용.
ex) def hello(): <- def 함수이름(매개변수 목록) :
print("hello world!") <- #코드 블록
return 결과
hello()
- 모든 함수를 이름을 갖고 있고, 이 이름을 불러주면 파이썬은 그 이름 아래 정의되어 있는 코드를 실행함.
이때, 함수를 부르는 행위를 호출(Call)이라 하고, 함수를 부르는 코드를 호출자(Caller)라고 함.
그리고, 함수가 호출자에게 결과를 돌려주는 것을 반환(Return)이라고 함.
-기본값 매개변수 : 매개 변수를 입력하지 않았을 때, 갖고 있는 기본값으로 할당되는 것.
사용방법 :
def print_string(text, count=1): <- 매개변수를 정의할 떄 값을 할당해 놓으면 기본값 매개변수가 됨.
for i in rangeg(count):
print(text)
- 키워드 매개변수 : 호출자가 매개변수의 이름을 일일이 지정해 데이터를 입력하는 것. ex) print_args(argc = 3, 'argv1)
- 가변 매개변수 :
형식 :
def 함수이름(*매개변수): <- 매개변수 앞에 *를 붙이면 해당 매개변수는 가변으로 지정됨(*를 이용하여 정의된 가변 매개변수는 형식이 튜플임.)
코드블록
========================
def 함수이름(**매개변수) : <- 매개변수 앞에 **를 붙이면 딕셔너리 가변매개변수가 됨.
코드블록
※대개는 가변 매개변수만 단독으로 사용하는 경우보다, 일반 매개변수와 함께 사용하는 경우가 더 많음.
주의할 점이 있는데, 가변 매개변수와 함께 사용하는 일반 매개변수의 정의 순서에 따라 호출방식이 달라지게 됨.
먼저, 가변 매개변수의 '앞'에 정의되는 일반 매개변수는 키워드 매개변수를 사용하면 안 됨. ex) print_args(3, '1', '2', '3')(0) print_args(argc = 3, '1', '2', '3')(X)
또, 일반 매개변수가 가변 매개변수 뒤에 정의되어 있는 함수를 호출할 때에는 일반 매개변수를 키워드 매개변수로 호출해야 함. ex) print_args2('1','2','3',argc=3)(0) print_args2('1','2','3',3)(X)
- 호출자에게 반환하기
함수가 호출자에게 값을 반환할 때에는 return문을 이용함.
return 문은 다음 세 가지 방법으로 사용됨.
1. return 문에 결과 데이터 담아 실행 -> 함수가 즉시 종료되고 호출자에게 결과를 전달됨.(return문은 함수의 실행을 종료시키고, 자신에게 넘겨진 데이터를 호출자에게 전달함)
2. return문에 아무것도 넣지 않고 실행 -> 함수가 즉시 종료됨. 이 경우 호출자에게 '반환'한다기 보다는 함수를 '종료'시키는 용도로 사용됨.(반환할 데이터 없이 실행하는 return 문은 '반환'의 의미보다는 '함수 종료'의 의미로 사용됨)
3. return문 생략 -> 함수의 모든 코드가 실행되면 종료됨.(return문을 굳이 쓸 필요가 없다면 생략 가능)
- 함수 밖의 변수, 함수 안의 변수
변수의 유효 범위(Scope)라는 개념을 이해.
지역 변수 : 함수 상에서 만든 변수는 함수 안에서만 살아있다가 함수 코드의 실행이 종료되면 그 생명을 다함.
전역 변수 : 프로그램 전체를 유효 범위로 가지는 변수, 함수 또는 객체 사이에 데이터 교환이 필요할 때 사용됨.
파이썬은 함수 안에서 사용되는 모든 변수를 지역 변수로 간주, 전역 변수를 사용하려면 'global' 키워드를 사용해야 함.
- 자기 스스로를 호출하는 함수: 재귀함수
주의 해야할 점)
1. 재귀 함수는 호출 비용이 큼 = 컴퓨터가 더 많은 일을 하게 만들어서 성능이 떨어지는 소프트웨어를 만들게 함. -> 재귀 함수를 반복문으로 대체하는 것이 낳음
2. 재귀 함수가 종료될 조건을 만들어줘야 함 <- 메로리를 계속 추가로 사용하는 무한루프가 되어 버림
- 함수를 변수에 담아 사용하기 : 파이썬이 함수를 일급 객체(First Class Object)로 다루기 때문.
파이썬에서는 함수를 변수에 담아 사용할 수 있음. 즉, 함수를 변수 처럼 사용할 수 있음.
ex)
def print_something(a):
print(a)
p = print_something # ()없이 함수의 이름만을 변수에 저장
p(123) #변수의 이름 뒤에 ()를 붙여 함수처럼 호출
p('abc')
함수를 변수처럼 사용할 수 있다면 순서열이나 딕셔너리에도 담을 수 있음.
함수를 다른 함수의 매개변수로 사용할 수 있음.
- 중첨 함수(Nested Function) : 함수 안의 함수
파이썬에서는 함수 안에서 함수를 정의하는 것이 가능.
이 중첨 함수는 자신이 소속된 함수의 매개변수에 접근할 수 있음.
자신이 소속되어 있는 함수 외부에서는 보이지 않는다.
- pass: 구현을 잠시 미뤄둘 때 사용.
pass 키워드는 함수나 클래스의 구현을 미룰 때 사용
사용방법 :
def empty_function():
pass
'스마트웹앱콘텐츠전문가 > 파이썬(플라스크, 데이터 처리)' 카테고리의 다른 글
[모듈,패키지 및 클래스] (0) | 2018.01.23 |
---|---|
[흐름제어]분기문,반복문,제어문... (0) | 2018.01.22 |
[데이터 다루기]리스트, 튜플, 딕셔너리 (0) | 2018.01.19 |
[데이터 다루기]수와 텍스트 (0) | 2018.01.19 |
윈도우에서 pip를 이용해 라이브러리 다운받기 (0) | 2018.01.16 |