CheatSheet | Python Basic

1. Python Basic Data Type

1.1 Number

  a**b # 제곱
  a//b # 몫
  a%b  # 나머지

1.2 String

  >>> y = 3.42134234
  >>> "{0:0.4f}".format(y) # 문자열포맷
  '3.4213'

1.3 List

  a = [1,2,3]
  b = [4,5,6]

  # 1. 리스트 더하기
  >>> a + b : [1,2,3,4,5,6]  
  # 2. 리스트 반복
  >>> a*3 : [1,2,3,1,2,3,1,2,3]

1.4 Tuple

  • 튜플은 리스트와 달리 값을 변화시킬 수가 없다.

  • 값이 바뀌지 않았으면 할때 리스트 대신 튜플사용

    t1 = (1,) # ele가 하나일때는 ,붙여야함
    t2 = 1,2,3  # 괄호 생략 가능
    

1.5 Dict

  • Hash 자료구조로 되어있어 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다.

    dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
    

1.6 Set

  • 중복을 허용하지 않는다

  • 순서가 없다. 따라서 인덱싱으로 set 안의 element 를

    # generate set 
    A = set([1,2,2,3]) # >> {1, 2, 3}
    B = set([1,3,4])
    # indexing 
    A[2] # >> TypeError: set object does not support indexing
    
    # operation
    A&B, A|B, A-B
    
    # methods
    A.remove(1)
    A.add('b')
    A.update(['a','b'])
    

1.7 Bool

  • True/False 의 두가지 값만을 가질 수 있다.




2. Lambda

  • 쓰고 버리는 일회용 함수로 간단한 기능을 일반적인 함수와 같이 정의해두고 쓰는게 아니라 필요한 곳에서 즉시 사용하고 버림

  • map(func, iterable), filter(func, iterable) 함수와 주로 함께 쓰임, map은 func를 iterable에 모두 적용한 결과를 리턴하고, filter는 iterable중 func를 만족하는 ele만 리턴함

# lambda arg리스트:표현식 으로 정의하여 사용
>> g = lambda x:x**2
>> g(8)
64

# map(func, iterable) 과 함께 쓰일 때
>>> list(map(lambda x:x+3, [1,2,3,4]))
[4, 5, 6, 7]

# filter(func, iterable)와 함께 쓰일 때
>>> list(filter(lambda x:x>0, range(-5,5)))
[1, 2, 3, 4]




3. init, call

  • Class는 객체를 만들어내기 위한 설계도(틀)로서 연관된 변수와 메서드의 집합
  • Object(객체) 는 클래스타입으로 선언되었을 때, Instance 는 그 객체가 메모리에 할당되어 실제 사용될 때
class A:
    def __init__(self): # 객체를 생성할때 사용
        print('init')
    def __call__(self): # 마치 함수를 호출하는 것처럼 인스턴스를 호출할 수 있도록 만듦
        print('call')

>>> a = A()
init
>>> a()
call




4. Decorator

  • 함수를 arg로 받아서, 원본함수를 변경하지 않고 앞 뒤에 새로운 로직을 추가하는 경우가 자주 있음,

  • 가령 아래와 같이 함수를 입력으로 받아 함수의 실행시간을 출력해주는 로직을 추가해서 사용할 수 있음

def time_check(func):
  def new_func(*args, **kwargs):
    start_time = time.time()
    result = func(*args, **kwargs)
    end_time = time.time()
    print('실행시간:', end_time-start_time)
    return result
  return new_func

def big_number(n):
  return n**n**n

new_func = time_checker(big_number)
new_func(6)  
  • Decorator를 적용하여 이를 아래와 같이 바꿀 수 있다.
def time_check(func):
  def new_func(*args, **kwargs):
    start_time = time.time()
    result = func(*args, **kwargs)
    end_time = time.time()
    print('실행시간:', end_time-start_time)
    return result
  return new_func

@time_check
def big_number(n):
  return n**n**n

big_number(6)




5. Method

  • instance method : 가장 흔히 쓰이는 메서드로 인스턴스 변수에 엑세스 할 수 있도록 첫번째 파라미터에 항상 self 를 갖는다.

  • static method : 정적 메서드는 이러한 self 파라미터를 갖지 않고 인스턴스 변수에 엑세스 할 수 없다. 따라서 보통 객체 필드와 독립적이지만 로직상 클래스내에 포함되는 메서드에 사용한다. 클래스 안에 있지만 일반 함수와 다를게 없이 그냥 클래스 인스턴스에서 호출할 수 있음. 인스턴스 메소드는 인스턴스 안의 멤버 변수의 값을 바꾸거나 하지만 정적 메서드는 그러지 못함.

  • class method : self 대신 클래스를 cls 라는 파라미터로 전달받아 클래스 변수에 엑세스 [참고]

6. Path

os.chdir('/opt/vidClassifier/classifier/')
sys.path.append('/opt/vidClassifier/classifier')