공부/python

[Python] 함수(Function)정의

JangGiraffe 2016. 6. 16. 19:45

파이썬 함수(Function)

 

함수정의

 

def 이름 (매개변수 나열없으면 생략 가능) :

내용...

return 데이터 없으면 생략 가능

 

함수호출

 

다른 파일에 있는 경우 :

import 파일이름

파일이름.함수(매개변수)

 

같은 파일에 있는 경우 :

함수(매개변수)

 

연습1 - 함수 만들어서 호출해보기..

(함수 : disp.py[기본경로] , inFolder[기본경로.folder])

(함수호출 : funcTest[기본경로]- 임포트 위치 참고!)

* 파이썬은 자료형이 없기 때문에 함수에 매개변수를 어떤 자료형을 줘야 할지 헤깔릴 수가 있겠음..

 

↑ 위에서부터 inFolder.py, disp.py, funcTest.py

 

실행결과

 

 

*함수호출시 1MB의 스택을 만든다.

plus(int, int)라는 함수가 있다고 해보자.

 

1- result = plus(10,30)  result =plus(result,50)

2- result = plus(plus(10,30),50)

 

1번과 2번의 경우 모두 값은 90으로 동일하다

1번의경우 스택 하나 호출 후 반환 또 호출 후 반환을 하게 되므로 각각 1MB씩 사용함.

2번의경우 스택 하나를 호출 후 다시 하나를 호출하게 되어 순간 2MB의 메모리를 사용하게 된다.

 

현재 PC는 메모리가 매우 크기때문에 신경쓰지 않을 수도 있곘지만, 웹서비스같은 경우 이 함수를 쓰는 사람이 몰리면 순식간에 큰 메모리를 사용하게 될 수도 있다고 한다. 이를 신경써서 코딩하면 좋을 것 같다.

 

 

----------------

 

한 가지 더 신기했던 점

java에서는 자료형을 반환하는 함수 선언시 모든 경우에 return을 해줘야 했다

ex)if, else if 문 모두에 return 자료형을 사용해야함.

하지만 python에서는 원하는 경우엠나 return을 해주고 그 외의 경우에는 None을 반환하는 것 같다.

 

           

↑선언된 함수에는 분명히 else에 대한 return값이 없지만 오류가 나지 않는다.

 

 

 

 

 

 

반응형