Skip to content

Python 언어 치트 시트

Python은 멀티플랫폼 컴퓨터 프로그래밍 언어입니다. 객체 지향 동적 타이핑 언어로, 원래 자동화 스크립트(쉘) 작성을 위해 설계되었습니다. 지속적인 버전 업데이트와 새로운 언어 기능 추가를 통해 독립적인 대규모 프로젝트 개발에 점점 더 많이 사용되고 있습니다.

일반

  • Python은 대소문자를 구분합니다.
  • Python 인덱싱은 0부터 시작합니다.
  • Python은 중괄호를 사용하는 대신 공백(탭 또는 스페이스)을 사용하여 코드를 들여씁니다.

도움말

도움말 홈페이지 help()
함수 도움말 help(str.replace)
모듈 도움말 help(re)

모듈 (라이브러리)

모듈 내용 목록 dir(module1)
모듈 로드 import module1 *
모듈에서 함수 호출 module1.func1()

import 문은 새 네임스페이스를 만들고 해당 네임스페이스와 연결된 .py 파일의 모든 문을 실행합니다. 모듈 내용을 현재 네임스페이스로 로드하려면 “from module1 import *“를 사용하십시오.

스칼라 타입

데이터 타입 확인: type(variable)

정수형 (Integers)

int/long - 큰 정수는 자동으로 long 정수로 변환됩니다.

부동 소수점형 (Floats)

float - 64비트, “double” 타입은 없습니다.

불리언 (Booleans)

bool - 참(True) 또는 거짓(False)

문자열 (Strings)

str - Python 2.x 기본: ASCII; Python 3: Unicode

  • 문자열은 작은따옴표/큰따옴표/세 개의 따옴표로 감쌀 수 있습니다.
  • 문자열은 문자 시퀀스이므로 다른 시퀀스와 마찬가지로 처리될 수 있습니다.
  • 특수 문자는 앞에 \ 또는 r을 붙여 보충할 수 있습니다.
    str1 = r'this\f?ff'
  • 문자열 포맷팅은 여러 가지 방법으로 수행할 수 있습니다.
    template = '%.2f %s haha $%d'
    str1 = template % (4.88, 'hola', 2)

str(), bool(), int(), float()도 명시적 타입 변환 함수입니다.

Null 값

NoneType(None) - Python의 ’null’ 값 (None 객체의 인스턴스는 하나만 존재함)

  • None은 예약된 키워드가 아니라 “NoneType"의 유일한 인스턴스입니다.
  • None은 선택적 함수 매개변수의 일반적인 기본값입니다.
    def func1(a, b, c = None)
  • None의 일반적인 용도:
    if variable is None :

날짜 및 시간 (Datetime)

datetime - Python 내장 “datetime” 모듈. “datetime”, “date”, “time” 등의 타입을 제공합니다.

  • “datetime"은 “date"와 “time"에 저장된 정보를 결합합니다.
    문자열에서 datetime 생성 dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’)
    “date” 객체 가져오기 dt1.date()
    “time” 객체 가져오기 dt1.time()
    datetime을 문자열로 포맷팅 dt1.strftime(’%m/%d/%Y %H:%M’)
    필드 값 수정 dt2 = dt1.replace(minute = 0, second=30)
    차이 계산 diff = dt1 - dt2 # diff는 ‘datetime.timedelta’ 객체임

데이터 구조

튜플 (Tuples)

튜플은 고정 길이의 불변 시퀀스입니다.

튜플 생성 tup1=4,5,6 또는 tup1 = (6,7,8)
중첩된 튜플 생성 tup1 = (4,5,6), (7,8)
시퀀스 또는 반복자를 튜플로 변환 tuple([1, 0, 2])
튜플 연결 tup1 + tup2
튜플 언패킹 a, b, c = tup1
변수 교체 b, a = a, b

리스트 (Lists)

리스트는 가변 길이의 변경 가능한 요소 시퀀스입니다.

리스트 생성 list1 = [1, ‘a’, 3] 또는 list1 = list(tup1)
리스트 연결 list1 + list2 또는 list1.extend(list2)
리스트에 추가 list1.append(‘b’)
지정된 위치에 삽입 list1.insert(posIdx, ‘b’) **
인덱스로 요소 제거 valueAtIdx = list1.pop(posIdx)
특정 값의 첫 번째 발생 제거 list1.remove(‘a’)
리스트에 값이 존재하는지 확인 3 in list1 => True ***
리스트 정렬 list1.sort()
사용자 정의 함수를 사용한 정렬 list1.sort(key = len) # 길이에 따라 정렬

참고:

  • “시작(start)” 인덱스는 포함되지만 “중단(stop)” 인덱스는 포함되지 않습니다.
  • 시작/중단은 생략 가능하며, 기본값은 처음/끝입니다.

슬라이싱 (Slicing)

시퀀스 타입에는 ‘str’, ‘array’, ’tuple’, ’list’ 등이 포함됩니다.

list1[start:stop]
list1[start:stop:step]
list1[::2]
str1[::-1]

딕셔너리 (Hashes)

딕셔너리 생성 dict1 ={‘key1’ :‘value1’, 2 :[3, 2]}
매핑 함수를 통한 딕셔너리 구축 dict(zip(keyList, valueList))
요소 가져오기 dict1[‘key1’]
요소 변경/추가 dict1[‘key1’] = ’newValue’
값 가져오기, 없으면 기본값 반환 dict1.get(‘key1’, defaultValue)
키 존재 확인 ‘key1’ in dict1
요소 삭제 del dict1[‘key1’]
키 목록 가져오기 dict1.keys()
값 목록 가져오기 dict1.values()
값 업데이트 dict1.update(dict2) # dict1 값이 dict2로 대체됨

집합 (Sets)

집합은 고유한 요소의 순서 없는 모음입니다.

집합 생성 set([3, 6, 3]) 또는 {3, 6, 3}
set1이 set2의 부분 집합인지 확인 set1.issubset(set2)
set2가 set1의 상위 집합인지 확인 set1.issuperset(set2)
집합이 동일한지 확인 set1 == set2
합집합 (or) set1
교집합 (and) set1 & set2
차집합 set1 - set2
대칭 차집합 (xor) set1 ^ set2

함수

  • 기본 형태

    def func1(posArg1, keywordArg1 = 1, ..):
  • “함수는 객체다"의 일반적인 용도:

    def func1(ops = [str.strip, user_define_func, ..], ..):
        for function in ops:
            value = function(value)
  • 반환 값

    • 함수의 마지막에 return 문이 없으면 아무 값도 반환하지 않습니다.
    • 튜플 객체를 통해 여러 값 반환
     return (value1, value2)
    
     value1, value2 = func1(..)
  • 익명 함수 (Lambda)

    lambda x : x * 2
    # def func1(x) : return x * 2

자주 사용되는 함수

  1. Enumerate는 순서 튜플(key, val)을 반환하며, 여기서 key는 현재 요소의 인덱스입니다.

    for key, val in enumerate(collection):
  2. Sorted는 모든 반복 가능한 객체를 정렬합니다.

    sorted([2, 1, 3]) => [1, 2, 3]
  3. Zip은 객체에서 해당 요소를 튜플로 묶고 이 튜플의 리스트를 반환합니다.

    zip(seq1, seq2) => [('seq1_1', 'seq2_1'), (..), ..]
  4. Reversed는 역순 반복자를 반환합니다.

    list(reversed(range(10)))

제어와 흐름

  1. “if else” 조건을 위한 연산자:

    두 변수가 동일한 객체인지 확인 var1 is var2
    두 변수가 다른 객체인지 확인 var1 is not var2
    두 변수가 동일한 값을 가졌는지 확인 var1 == var2
  2. for 연산자의 일반적인 용도:

    for element in iterator :
  3. ‘pass’ - 아무것도 하지 않으며, 일반적으로 자리 표시자 문으로 사용됩니다.

  4. 삼항 표현식

    value = true-expr if condition else false-expr
  5. switch/case 문은 없으며, 대신 if/elif를 사용하십시오.

객체 지향

  1. ‘object’는 모든 Python 타입의 기초입니다.

  2. 모든 것(숫자, 문자열, 함수, 클래스, 모듈 등)은 객체이며 모든 객체에는 ’type’이 있습니다. 객체 변수는 메모리 위치에 대한 포인터입니다.

  3. 객체의 기본 형태

    class MyObject(object):
        # 'self'는 Java/C++의 'this'에 해당함
        def __init__(self, name):
            self.name = name
    
        def memberFunc1(self, arg1):
            ..
    
        @staticmethod
        def classFunc2(arg1):
            ..
    
    obj1 = MyObject('name1') 
    obj1.memberFunc1('a') 
    MyObject.classFunc2('b')
  4. 대화형 도구:

    dir(variable1) # 객체에서 사용 가능한 모든 메서드 목록 표시

문자열 작업

구분 기호를 사용하여 리스트/튜플 결합

', '.join([ 'v1', 'v2', 'v3']) => 'v1, v2, v3'

문자열 포맷팅

string1 = 'My name is {0} {name}'
newString1 = string1.format('Sean', name = 'Chen')

문자열 분할

sep = '-'
stringList1 = string1.split(sep)

부분 문자열 가져오기

start = 1
string1[start:8]

문자열을 0으로 채우기

month = '5'
month.zfill(2) => '05' 
month = '12'
month.zfill(2) => '12'

예외 처리

  1. 기본 형태
try:
    ..
except ValueError as e:
    print e
except (TypeError, AnotherError):
    ..
except:
    ..
finally:
    ..
  1. 수동으로 예외 발생시키기
raise AssertionError # 어설션 실패
raise SystemExit # 프로그램 종료 요청
raise RuntimeError('Error Message: ..')

리스트, 집합 및 딕셔너리 컴프리헨션 (Comprehensions)

코드를 읽고 쓰기 쉽게 만드는 구문적 설탕(Syntactic sugar).

  1. 리스트 컴프리헨션

    컬렉션의 요소를 필터링하고 필터를 통과한 요소를 단일 표현식으로 변환하여 간결하게 새 리스트를 형성합니다.

    기본 형태

    [expr for val in collection if condition]

    단축어:

    result = []
    for val in collection:
        if condition:
            result.append(expr)

    필터 조건은 생략하고 표현식만 남겨둘 수 있습니다.

  2. 딕셔너리 컴프리헨션

    {key-expr : value-expr for value in collection if condition}
  3. 집합 컴프리헨션

    기본 형태: 리스트 컴프리헨션과 동일하며 [] 대신 {} 사용

  4. 중첩 리스트 컴프리헨션

    기본 형태:

    [expr for val in collection for innerVal in val if condition]