Python/Python 모듈탐구

[Python] - 모듈탐구 sys - 우리 Python 해부하기

sys모듈은 Python 인터프리터의 환경설정 등에 접근한다. 흔히 사용하는 sys.modules 나 sys.path 뿐만이 아니라 더욱 폭넓은 기능과 정보들을 가지고 있으니, 이번 시간을 통해서 자세히 알아보도록 하자


sys에서 제공하는 정보

1. sys.argv : Python 스크립트에 전달된 명령 줄의 인자를 LIST형태로 전달한다. 스크립트 이름은 sys.argv[0]를 가지고 뒤에 전달이 되면 순서대로 sys.argv [1], [2]가 된다. 만약 실행형 옵션인 -c를 설정하면 sys.argv [0]는 "-c"가 된다.

2. sys.byteorder : 현재의 바이트표기법이 little인지 big인지를 표시한다.

3. sys.builtin_module_names : 현재 Python 인터프리터로 가져온 모든 모듈의 이름을 제공하는 문자열을 튜플로 반환한다.

4. sys.copyright : Python Interpreter의 저작권을 문자열로 반환한다.

5. sys.dont_write_bytecode : 이게 True면 모듈 import 시. pyc를 만들지 않는다.

6. sys.pycache_prefix : 이게 설정되면(디렉터리 문자열로 설정)  __pycache__에 pyc가 생성되는 것이 아니라, 같은 디렉터리 문자열에 pyc가 생성이 된다.

7. sys.float_info : 실수는 운영환경에 따라 표현의 깊이 달라진다. 그 표현 깊이를 반환한다.

8. sys.hash_info : 해시 알고리즘을 계산하는 머신의 정보를 튜플로 반환한다.

9. sys.int_info : 정수 표현의 수준을 튜플로 반환한다.

10. sys.maxunicode : 가장 큰 유니코드의 코드 값을 반환한다.

11. sys.modules : 이미 로드된 모듈을 저장한 Dictionary이다. API에서는 modules Dictionary를 직접 바꾸는 것은 추천하지 않는다.

12. sys.path : 모듈이 탐색될 수 있는 경로를 가진 LIST이다. sys.path에 경로가 추가되면, 그 위치에서 모듈을 절대 경로를 생략하고 import 할 수 있다.

13. sys.platform : Python이 실행되는 플랫폼을 문자열로 반환한다.

14. sys.thread_info : 스레드 구현에 관련된 정보를 담은 Tuple

15. sys.version : Python 인터프리터의 버전 번호와 빌드 번호 등을 포함한 문자열, 유사한 기능으로 sys.api_version, sys.version_info, sys.winver

 

 

sys에서 제공하는 함수

1. sys.exit([args]) : SystemExit이라는 Exception을 발생시켜 Python에서 빠져나온다. 따라서 이를 try - except으로 예외 처리하면 Python은 종료되지 않는다.

2. sys.getallocatedblocks() : 현재 Pythond이 메모리에서 차지한 공간을 출력한다. 메모리 Leak 등을 검사하는 데 사용된다.

3. sys.getdefaultencoding() : 현재 기본 문자열 인코딩 타입을 반환한다.

4. sys.getrecursionlimit() : 스택의 재귀 깊이를 반환한다. setrecursionlimit(int)로 설정할 수도 있다.

5. sys.getsizeof(object) : 객체의 크기를 바이트 단위로 반환한다. 객체가 참조하는 다른 객체의 크기를 포함하지 느 않는다.

6. sys.intern(String) : String을 메모리 사전에 등록한다. 이는 성능 최적화를 위한 것으로, 만약 'ABC"라는 문자열이 intern으로 등록되면, a="ABC', b="ABC"라고할 때 a와 b는 같은 메모리 위치를 가진다.

7. sys.is_finalizing() : Python이 종료 중이면 True, 아니면 False를 반환한다.

 

 

표준 스트림

1. sys.stdin : 표준 입력 스트림(객체다)

2. sys.stdout : 표준 출력 스트림(객체다)

3. sys.stderr : 표준 에러 스트림(객체다)

 

* 출처 : docs.python.org/ko/3/library/sys.html

 

sys — 시스템 특정 파라미터와 함수 — Python 3.9.4 문서

sys — 시스템 특정 파라미터와 함수 이 모듈은 인터프리터에 의해 사용되거나 유지되는 일부 변수와 인터프리터와 강하게 상호 작용하는 함수에 대한 액세스를 제공합니다. 항상 사용 가능합니

docs.python.org


이번 시간에는 Python인터프리터와 실행환경에 관련된 sys에 관하여 조금 깊게 알아보았다. 위에 기술된 정보나 함수 외에도 저수준의 제공 기능(함수의 breakpoint, hook, audit 등)을 또한 제공하니, API를 읽어보는 것을 추천한다.