본문 바로가기
1. SW 개발 & IT 트렌드

Python Tip

by soosun 2020. 5. 17.

ㅇ 모듈의 위치

     모듈 import 할때,  그 모듈을 찾기 위해 다음과 같은 경로를 순서대로 검색한다.

  1. 현재 디렉토리
  2. 환경변수 PYTHONPATH에 지정된 경로
  3. Python이 설치된 경로 및 그 밑의 라이브러리 경로
  4. 모든 경로들은 시스템 경로인 sys.path에 리스트 형태로 저장
    import sys
    print(sys.path)

ㅇ Python 3.3 이후부터는 init 파일이 없어도 패키지로 인식 가능

 

Python은 다른 언어에서 흔히 사용하는 public, protected, private 등의 접근 제한자 (Access Modifier)를 갖지 않는다. 

    Python 클래스는 기본적으로 모든 멤버가 public이라고 할 수 있다.

    Python 코딩 관례(Convention)상 내부적으로만 사용하는 변수 혹은 메서드는 그 이름 앞에 하나의 밑줄(_) 을 붙인다.

    하지만 이는 코딩 관례에 따른 것일 뿐 실제 밑줄 하나를 사용한 멤버도 public 이므로 필요하면 외부에서 엑세스할 수 있다.
    만약 특정 변수명이나 메서드를 private으로 만들어야 한다면 두개의 밑줄(__)을 이름 앞에 붙이면 된다.

 

ㅇ Special Method (Magic Method)

파이썬에는 Initializer 이외에도 객체가 소멸될 때 (Garbage Collection 될 때) 실행되는 소멸자(__del__) 메서드, 두 개의 객체를 ( + 기호로) 더하는 __add__ 메서드, 두 개의 객체를 ( - 기호로) 빼는 __sub__ 메서드, 두 개의 객체를 비교하는 __cmp__ 메서드, 문자열로 객체를 표현할 때 사용하는 __str__ 메서드 등 많은 특별한 용도의 메서드들이 있는데, 이러한 메서드들을 Special Method 혹은 매직메서드(Magic Method)라고 부른다. 

 

《컴파일된》 파이썬 파일

모듈 로딩을 빠르게 하려고, 파이썬은 __pycache__ 디렉터리에 각 모듈의 컴파일된 버전을 module.version.pyc 라는 이름으로 캐싱합니다. version 은 컴파일된 파일의 형식을 지정합니다; 일반적으로 파이썬의 버전 번호를 포함합니다. 예를 들어, CPython 배포 3.3 에서 spam.py 의 컴파일된 버전은 __pycache__/spam.cpython-33.pyc 로 캐싱 됩니다. 이 명명법은 서로 다른 파이썬 배포와 버전의 컴파일된 모듈들이 공존할 수 있도록 합니다.

 

여러 디렉터리에 있는 패키지

패키지는 특별한 어트리뷰트 하나를 더 지원합니다, __path__. 이것은 패키지의 __init__.py 파일을 실행하기 전에, 이 파일이 들어있는 디렉터리의 이름을 포함하는 리스트로 초기화됩니다. 이 변수는 수정할 수 있습니다; 그렇게 하면 그 이후로 패키지에 포함된 모듈과 서브 패키지를 검색하는 데 영향을 주게 됩니다.

이 기능이 자주 필요하지는 않지만, 패키지에서 발견되는 모듈의 집합을 확장하는 데 사용됩니다.

 

ㅇ List Comprehension

oldlist = [1, 2, 'A', False, 3]

newlist = [i*i for i in oldlist if type(i)==int]

print(newlist)  # 출력: [1, 4, 9]

 

ㅇ Set Comprehension

oldlist = [1, 1, 2, 3, 3, 4]
newlist = {i * i for i in oldlist}
print(newlist)  # 출력 : {16, 1, 9, 4}

 

Dictionary Comprehension

id_name = {1: '박진수', 2: '강만진', 3: '홍수정'}
name_id = {val: key for key, val in id_name.items()}
print(name_id)  # 출력 : {'박진수': 1, '강만진': 2, '홍수정': 3}

 

# source - http://pythonstudy.xyz/

# source - https://docs.python.org/ko/3/tutorial/index.html 

 

'1. SW 개발 & IT 트렌드' 카테고리의 다른 글

Python 다양한 정규식 패턴 표현  (0) 2020.05.19
Python 표준 라이브러리  (0) 2020.05.17
Python 기초  (0) 2020.04.23
Open IoT Platform - IoTMakers Portal  (0) 2019.07.27
KT S/W Developer Conference 2019  (0) 2019.07.15

댓글