스마트웹앱콘텐츠전문가/파이썬(플라스크, 데이터 처리)

[함수]

9D4U 2018. 1. 22. 14:02
728x90
반응형

(함수)

- 파이썬에서는 함수나 메소드를 '정의'할 때 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

728x90