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
이번 시간에는 Python인터프리터와 실행환경에 관련된 sys에 관하여 조금 깊게 알아보았다. 위에 기술된 정보나 함수 외에도 저수준의 제공 기능(함수의 breakpoint, hook, audit 등)을 또한 제공하니, API를 읽어보는 것을 추천한다.
'Python > Python 모듈탐구' 카테고리의 다른 글
[Python] - 모듈탐구 re - [^정규표현식$?] (0) | 2021.04.19 |
---|---|
[Python] - 모듈탐구 string과 Formatter - 문자열 자유자재로 다루기 (0) | 2021.04.17 |
[Python] - 모듈탐구 os - Python으로 내 컴퓨터 조작하기 (0) | 2021.04.11 |
[Python] - 모듈탐구 pickle - 자료구조의 저장과 불러오기 (0) | 2021.04.11 |
[Python] - 모듈탐구 copy - 뭐! 모듈이 복사가 된다고? (0) | 2021.04.11 |