728x90
파이썬의 특징

파이썬의 특징

  • 인터프리터 언어 : 컴파일 과정이 없음
    • 파이썬 코드는 인터프리터를 통해 .pyc라는 binary 파일로 변환
    • Cross-Platform으로 동작 가능
  • Dynamic Typing(Duck Typing) : 타입 명시가 필요 없음
  • 단순한 문법

파이썬의 Value :

  • 프로그램에 의해 사용될 수 있는 객체 표현
    • 숫자 : 정수(Int), 실수(Float), 허수(3+j), Boolean(True, False)
      • 허수는 .real, .imag로 실/허수를 분리해낼 수 있음

문자열

  • "" / '' - 한 줄
  • """ """ - 여러 줄
  • 특수문자는 (키보드 ₩ 표시)뒤의 문자로 입력 가능
  • 문자열 메소드
    • ''.join : 문자열을 인자와 함께 이어 붙임
    • split('') : 문자열을 인자 기준으로 나눔
    • float, int : 문자열을 숫자로 (int의 경우 진수 지정 가능)
    • strip / lstrip / rstrip : 양옆 / 왼쪽 / 오른쪽 공백 제거
    • whitespace : 공백 문자로 처리하는 문자를 확인
    • find, rfind : 시작/끝에서 문자를 찾아 인덱스 반환 (없으면 -1)
    • startswith, endswith : 해당 문자열로 시작/끝나는지 여부

리스트(배열) : [], list()

  • C와 달리 여러 타입의 값이 같이 들어갈 수 있음
  • [ 1, "123", [1,2,3] ]
  • 파이썬의 리스트 인덱스는 음수로도 가능
    • 리스트 처음의 인덱스는 0 혹은 -(리스트 길이)
    • 리스트 마지막 인덱스는 (리스트 길이 - 1) 혹은 -1
  • 슬라이스 : 리스트의 일부분을 추출해낼 수 있음
    • range와 유사하게 동작
    • a = [1,2,3,4,5]
    • a[:] = [1,2,3,4,5]
    • a[:2] = [1,2]
    • a[1:3] = [2,3]
  • 파이썬 리스트 함수
    • x=[1,2,3], y=[4,5,6]
    • len(x) : 리스트의 길이 반환 (3)
    • x[len(x):] = y, x 리스트의 뒤에 y를 연결할 수 있음
      • [1,2,3,4,5,6]
      • x.extend(y), x[2:3] = y로도 가능
      • x+y로도 가능
    • x[:0] = [1,2,3] : x 리스트의 앞에 [1,2,3]으로 연장
      • [4,5,6,1,2,3]
    • x.append(10) : 리스트 끝에 추가
      • [1,2,3,10]
    • x.insert(n, element) : n번째 인덱스 앞에 element 추가
      • x.insert(0,-1) = [-1,1,2,3]
    • del x[] : 리스트 원소를 지울 수 있음
      • del x[1] = [1,3]
      • del x[:] = []
    • x.remove(2) : x리스트 안의 원소 2를 지움
      • [1,3]
    • x.reverse() : 리스트 x를 역순으로 정렬
      • [3,2,1]
    • z = [1,3,2] - z.sort() 리스트를 크기순으로 정렬
      • [1,2,3]
      • z를 변화시키며 리턴값 없음
    • y = sorted(z) : 정렬된 새 리스트를 반환
      • z = [1,3,2], y=[1,2,3]
    • in : 값이 리스트에 있는지 확인
      • 1 in [1,2,3] : True
      • 5 in [1,2,3] : False
      • 5 not in [1,2,3] : True
    • min, max : 리스트 내의 최대/최소값 반환
    • x.index(1) : 해당 원소가 존재할 경우 인덱스 반환
      • 0
    • k = [1,1,1,2,2,3] - k.count(1) : k 리스트 내의 원소 개수 반환
      • 3

튜플 : (), tuple()

  • 수정 불가능한 리스트
  • (1,) : 하나의 원소를 갖는 튜플 - (1)는 정수 1임
  • 튜플의 활용 : 변수 선언의 간소화
  • extend unpacking * : *이 붙은 원소는 길이가 맞지 않는 모든 값을 흡수
x=1 y=2 z=3 w=4 #에서 (x,y,z,w)=(1,2,3,4)#로 # Extend unpacking a, *b, c = (1,2,3,4,5) ''' a=1 b=[2,3,4] c=5 ''' a,b,c,*d=(1,2,3) ''' a=1 b=2 c=3 d=[] : 빈 리스트 '''

딕셔너리 : {}, dict()

  • 키 - 값 관계를 갖는 자료 구조
  • d = {1:"one", 2:"two}일 때, d[1] = "one"을 반환

세트 : set()

  • 중복이 없는 자료 구조
  • set([1,2,3,4,1,2,3,4]) = set([1,2,3,4])
  • |, & : 합집합, 교집합 계산
  • -: 차집합
  • ^ : XOR 연산과 동일
  • frozenset([]) : Immutable한 set
    • set 안의 set을 구현하기 위해 사용
    • seta = {1,2, frozenset([3,4,5])}
      • set은 unique한 값을 갖는 객체를 해쉬로 구현하는데, set은 Mutable하므로 값이 바뀔 수 있어 set 안의 set 구현이 불가능. 이로 인해 set in set을 구현하기 위해 frozenset이 필요

파이썬 객체

  • 프로그램이 조작 가능한 데이터
  • Scala : Int, Float, Bool, None - 분리 불가능한 최소 단위
    • None : 반환값이 없는 함수에 사용(None을 반환)
  • Non-scala ; List, Tuple, Dictionary, defined Class - Scala Type에 기반해서 만들어지는 자료형
  • Type() : 자료형 변환이 가능(C의 type-casting)
  • 값과 변수
    • Value : 값을 표현
    • Variable : 데이터가 저장된 곳을 이름으로 표현
    • 값을 변수에 할당하여 사용 (Variable = Value : pi = 3.14)
      • 만약 x=3으로 할당 후, x=4로 할당하면, x = 3의 연결이 끊어지고, 4와 x가 bind됨
      • 3의 값은 python에서 자체적으로 메모리를 정리해줌
    • del(x) : 변수 x를 삭제
  • 객체 복사
    • 파이썬의 모든 변수는 레퍼런스(포인터)로 동작
      • a=3, b=3의 코드를 가정
      • C의 경우 a, b의 메모리 공간에 각각 3을 저장
      • python의 경우 a, b가 3의 값을 갖는 객체의 주소를 가리킴
      • a=4가 될 경우, c는 a변수의 메모리 공간을 지우고 4를 넣지만, python은 4의 값을 갖는 객체를 만들고, 그 주소를 a가 가리키게 됨
      • 리스트 역시 각 위치가 포인터로 동작
        • [1, 2, 3]은, 리스트의 0, 1, 2번째 인덱스가 각각 1,2,3의 값을 갖는 객체를 가리키는 상태
        • shallow copy : 리스트를 대입한 후 연산을 할 경우, 같은 리스트 변수에도 영향을 줌
li1 = [1,2,3] li2 = li1 #shallow copy li2 = li1 * 2 # li1, li2 모두 [2,4,6] # Deep copy : 분리하여 복사 import copy li2 = copy.deepcopy(li1)

  • 파일 객체
    • open('파일명', '읽기/쓰기 여부')로 호출
    • 존재하는 파일을 쓰기로 호출할 경우, 덮어쓰는 식으로 파일 작성

Immutable / Mutable

  • 파이썬의 객체 분류 기준
  • Immutable : Number, Boolean, Tuple
  • Mutable : List, Set, Dictionary
  • Object ID : id() 함수는 객체의 id를 반환
    • Immutable한 객체들의 id는 모두 동일
    • Mutable 객체(ex. list)의 경우 매번 새로 생성되므로 다른 id 할당
    • is 연산자로 두 객체가 완전히 같은지 확인 가능
      • ==는 두 객체의 값을 비교

주석

  • 코드가 어떻게 동작하는지를 설명
  • 실제 코드에는 영향을 주지 않음
  • # : 한 줄 / ''' ''' : 여러 줄
# comment in one line ''' comment in lines '''

파이썬의 코딩 스타일 - PEP 8

  • 개발 편의를 위한 코딩 규칙
  • 모듈명, 패키지명 : 모두 소문자로, 필요할 때만 _로 구분 (imp, sys)
  • 함수, 변수명 : 모두 소문자로, 가독성을 위해 언더바 사용 (my_func(), my_var)
  • 클래스명 : 각 단어마다 대문자로 시작(MyClass)
  • 상수 : 모두 대문자, 가독성을 위해 언더바(MY_CONSTANT)
  • 들여쓰기 : tab 대신 스페이스 4번으로 사용할 것
  • 비교 : True, False와 직접적인 대조를 하지 말 것
    • if my_var == True >> if my_var
    • if my_var == False >> if not my_var
728x90

+ Recent posts