본문 바로가기
[SK Shieldus Rookies 16기]/Python

파이썬 함수와 모듈

by RYU21 2023. 10. 26.

[SK Shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안(2일차)

인프라 활용을 위한 파이썬

 

 

사용자 정의 함수

함수의 파라미터가 없을 때

 

함수의 파라미터가 있을 때

 

return

-함수를 종료하고 해당 함수를 호출한 곳으로 돌아 감

-함수를 실행할 때 모든 함수 관련 리소스는 스택에 저장, return 시점에서 스택에서 제거 됨

-파이썬은 다중 값 리턴이 가능(튜플형태로 리턴 됨)

-return만 적을 경우 None객체(다른언어의 NULL)를 리턴 함

 

 

지역변수 전역변수

함수 밖에 선언한 변수는 전역변수이고 함수내부에서 선언한 global_var는 지역변수이다

함수 내부에서 global_var를 변경해도 출력시 바뀌지 않는다.

 

하지만 global 키워드를 사용하면 변경할 수 있다

 

 

call by object-reference

파이썬은 모든 것이 객체로 정의된다. 객체의 종류는 Mutable, Immutable로 나누어지는데, 객체의 종류에 따라 call by value 또는 call by reference 둘 중 하나로 작동한다

 

call by value

int, string, tuple 등 immutable(불변형) 타입인 경우 인자값은 파라미터에 복사된다. 이때까진 참조에 의한 호출과 똑같이 작동하지만 함수안에서 값이 변경되는 순간 새로운 값을 생성하기 때문에 서로 주소가 달라지게 된다

 

call by reference

list, dictionary같은 mutable(가변형) 타입인 경우 함수의 인자로 넘어갈 때 주소를 직접 참조하므로 함수 내부변수를 변경해도 본래 변수의 값이 변경된다. 하단 코드에서 함수안의 _list의 주소(id)와 본문의 list1의 주소(id)가 같은 것을 볼 수 있다.

 

 

모듈과 패키지

모듈(Module)

- 프로그램의 기능 단위

- 파일 단위로 작성된 파이썬 코드

- 함수보다 상위 개념으로 코드의 재사용성을 제공(함수의 모임)

 

greetingPrint.py 파일 자체가 모듈이며 중간그림의 test.py에서 임포트 시켜서 사용가능하다

 

@@ main을 쓰는 이유

 

모듈에서 테스트나 어떤 이유로 출력이나 실행을  main없이 하면 test에서 import만 해도 모듈파일의 출력이 나오게 된다.

반면, main을 사용하여 모듈파일에서 테스트하면 test에서 모듈을 불러와도 출력이 나오지 않는다

 

패키지(Package)

- 파이썬 모듈을 디렉토리로 구분해 놓은 것

- 프로젝트 폴더 아래에 py파일을 포함한 폴더가 패키지이다

- 다양한 패키지가 존재(pip로 다운로드)

 

프로젝트 폴더에 pack이라는 디렉토리를 만들고 그안에 두개의 파이썬파일을 만들었다.

test.py에서 패키지 pack를 import한 후 아래와 같이 모듈들의 함수를 호출한다.

아래와 같이 import하면 pack를 생략하고 함수를 호출할 수 있다. *을 사용하면 해당 패키지 모두를 사용할 수 있다.