Skip to content

Python 언어 요약표 (Cheat Sheet)

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

일반

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

도움말 (Help)

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

모듈 (라이브러리)

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

import 문은 새로운 네임스페이스를 생성하고 해당 네임스페이스 내에서 관련 .py 파일의 모든 문을 실행합니다. 모듈 내용을 현재 네임스페이스로 로드하려면 “from module1 import *“를 사용하십시오.

스칼라 타입

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

정수 (Integers)

int/long - 큰 정수는 자동으로 롱 정수(long)로 변환됩니다 (Python 3에서는 int만 존재하며 크기 제한이 없습니다).

부동 소수점 (Floats)

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

불리언 (Booleans)

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

문자열 (Strings)

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

  • 문자열은 작은따옴표/큰따옴표/세따옴표를 사용할 수 있습니다.
  • 문자열은 문자 시퀀스이므로 다른 시퀀스와 동일하게 다룰 수 있습니다.
  • 특수 문자는 \를 앞에 붙이거나 r로 시작하는 원시 문자열(raw string)을 사용하여 표현할 수 있습니다.
    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 - Python 내장 “datetime” 모듈은 “datetime”, “date”, “time” 등의 타입을 제공합니다.

  • “datetime"은 “date"와 “time"에 저장된 정보를 결합합니다.
    문자열에서 날짜 시간 생성 dt1 = datetime.strptime(‘20091031’, ‘%Y%m%d’)
    “date” 객체 가져오기 dt1.date()
    “time” 객체 가져오기 dt1.time()
    날짜 시간을 문자열로 포맷팅 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 or 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] or list1 = list(tup1)
리스트 연결 list1 + list2 or 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]

딕셔너리 (해시)

딕셔너리 생성 dict1 ={‘key1’ :‘value1’, 2 :[3, 2]}
zip 함수로 딕셔너리 구성 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]) or {3, 6, 3}
부분 집합 여부 확인 set1.issubset(set2)
상위 집합 여부 확인 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 문이 없으면 아무것도 반환하지 않습니다(None).
    • 튜플 객체를 통해 여러 값 반환
    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)))

제어와 흐름 (Control Flow)

  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를 사용합니다.

객체 지향 (OOP)

  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으로 문자열 채우기 (Padding)

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]