python 입문

김동완·2022년 4월 13일
0
post-thumbnail

컴퓨터 프로그래밍 언어

컴퓨터에게 명령하기 위한 약속

컴퓨터

  • calculation + remember
  • 계산, 저장

프로그래밍

  • program : 일련의 명령어의 모음(집합)

언어

  • 자신의 생각을 나타내고 전달하기 위해 사용하는 체계
  • 문법적으로 맞는 말의 집합
  • 언어 공동체 내에서 이해될 수 있는 말의 집합

선언적 지식 : 사실에 대한 내용

명령적 지식 : How - to

  • ex) '과자를 먹는다'
    • How-to ?

파이썬 개발 환경

Easy to learn

Expressive Language

인터프리터 언어

객체 지향 프로그래밍

IDE : 통합개발환경

  • Pycharm : 알고리즘

Text editor : 메모장 + alpha

  • Visual Studio Code : 코딩(웹개발)

기초 문법

코드 스타일 가이드

  • 코드를 '어떻게 작성할지'에 대한 가이드라인
  • 파이썬에서 제안하는 스타일 가이드
    • PEP8
  • 기업, 오픈소스 등에서 사용되는 스타일 가이드
    • Google Style guide

들여쓰기

  • Space Sensitive
    • 문장을 구분할 때 , 중괄호({,}) 대신 들여쓰기 사용
    • 들여쓰기를 할 때는 4칸 혹인 1탭을 입력
      • 주의! 한 코드 안에서는 반드시 한 종류의 들여쓰기를 사용 -> 혼용하면 안됨
        • Tap 할꺼면 Tab만

변수

  • 왼쪽에 이름을 짓고 오른쪽에 값을 넣는다. '='으로 붙인다.

    • = 할당한다
  • 컴퓨터 메모리 어딘가에 저장되어 있는 객체를 참조하기 위해 사용되는 이름

    • 숫자, 문자, 클래스 등 값을 가지고 있는 모든 것 (Things..)
    • 파이썬은 객체지향 언어이며, 모든 것이 객체로 구현됨
  • 동일 변수에 다른 객체를 언제든 할당할 수 있기 때문에, 즉, 참조하는 객체가 바뀔 수 있기 때문에 변수라고함.

  • 변수는 할당연산자(=)를 통하 값을 할당(assignment)

  • type()

    • 변수에 할당된 값의 타입
    • 변수 활용의 핵심은 변수의 Type!
  • id()

    • 변수에 할당된 값(객체)의 고유한 아이덴티티 값이며, 메모리 주소임
  • 변수 할당

  • 다른 값을 동시에 할당할 수 있음

  • x, y = 1,2
    print(x, y)
    #1 2
  • 같은 값을 동시에 할당할 수 있음

    • x = y = 1004
      pirint(x , y)
      #1004 1004
  • 에러 발생 시 특정 단어를 확인하자!

  • x와 y의 값을 바꿀 때

    • x, y = y, x
  • 식별자

    • 변수의 이름은 어떻게 지을 수 있을까?

    • 파이썬 객체를 식별하는데 사용하는 이름

    • 규칙

      • 식별자의 이름은 영문 알파벳, 언더스코어, 숫자로 구성

      • 첫 글자에 숫자가 올 수 없음

      • 길이제한이 없고, 대소문자를 구별

      • 다음의 키워드는 예약어로 사용할 수 있음

      • KeywordKeywordKeyword
        andexecnot
        assertfinallyor
        breakforpass
        classfromprint
        continueglobalraise
        defifreturn
        delimporttry
        elifinwhile
        elseiswith
        exceptlambdayield
    • 내장함수나 모듈 등의 이름으로도 만들면 안됨

      • 기존의 이름에 다른 값을 할당하게 되므로 더 이상 동작하지 않음
  • 사용자 입력

    • input([prompt])
      • 사용자로부터 값을 즉시 입력 받을 수 있는 내장함수
      • 대괄호 부분에 문자열 넣음녀 입력 시, 해당 문자열을 출력
  • 주석

    • 코드에 대한 설명

자료형

- None  : 값이 없음을 표현하기 위한 타입의 (NoneType)
  • Boolearn Type

    • True/False 값을 가진 타입의 bool
    • 비교/논리 연산을 수행함
    • 다음은 모두를 False로 변환
      • 0,0.0,(), [], ''
      • 안에 값이 비어있으면 False
      • 무엇이라도 값이 있으면 True ex) bool([0])
  • Numeric Type

    • Int
      • 모든 정수의 타입은 int
      • 매우 큰 수를 나타낼 대 오버플로우가 발생하지 않음
        • 오버플로우 : 데이터 타입별로 사용할 수 있는 메모리의 크기를 넘어서는 상황
        • 임의 정밀도 산술을 통해 고정된 형태의 메모리가 아닌 가용 메모리들을 활용하여 모든 수 표현에 활용
      • 진수 표현
        • 2진수 : 0b #0b10 :2
        • 8진수 : 0o #0o30 :24
        • 16진수 :0x 0x10 :16
    • Float
      • 정수가 아닌 모든 실수는 float
      • 부동소수점
        • 실수를 컴퓨터가 표현하는 방법 -2진수(비트)로 숫자를 표현
        • 이 과정에서 floating point rounding error가 발생하여, 예상치 못한 결과 발생
        • 값 비교하는 과정에서 정수가 아닌 실수인 경우 주의할 것
        • 매우 작은 수보다 작은지를 확인하거나 math 모듈 활용
    • Complex
      • 실수부와 허수부로 구성된 복소수는 모두 complex 타입
      • 허수부를 j로 포현
  • String Type

    • 모든 문자는 str 타입
    • 문자열은 작은 따옴표(')나 큰 따옴표("")를 활용
      • 문자열을 묶을 때 동일한 문장부호를 활용
      • PEP8에서는 소스코드 내에서 하나의 문장부호를 선택하여 유지하도록 함
    • Immutable
      • str은 변경할 때 인덱스로 할당이 불가능하다.(list랑 비슷 )
    • Iterable
      • for문으로 문자를 반복할 수 있다.
    • 중첩 따옴표
      • 따옴표 안에 따옴표 사용 '""' "''"
    • 삼중따옴표
      • 작은 따옴표나 큰 따옴표를 삼중으로 사용
        • 따옴표 안에 따옴포를 넣을 때,
        • 여러줄을 나눠 입력할 때 편리
    • Excape sequence
      • 문자열 내에서 특정 문자나 조작을 위해서 역슬래시()를 활용하여 구분
    • String Interpolation
      • 문자열을 변수로 활용하여 만드는 방법
        • %-formatting : 거의 대부분 타 프로그래밍 언어 (s = string, d = int, f = score)
        • str.format() :
        • f-strings : python 3.6+
  • Container

    • 여러 개의 값을 담을 수 있는 것으로, 서로 다른 자료형을 저장할 수 있음
      • List, tuple
      • 0213 => 정렬됨 but 순서가 없음
  • List

    • 순서를 가지는 0개 이상의 객체를 참조하는 자료형

      • 생성된 이후 내용 변경이 가능 -> 가변 자료형
      • 유연성 때문에 파이썬에서 가장 흔히 사용
    • 항상 대괄호 형태로 출력

    • 생성과 접근

      • 리스트는 대괄호([])혹은 list()로 생성
      • 순서가 있는 시퀀스나 인덱스로 접근
    • Tuple

      • 순서를 가지는 0개 이상의 객체를 참조하는 자료형
        • 생성 후 , 담고 있는 객체 변경이 불가 -> 불변 자료형
      • 항상 소괄호 형태로 출력
      • 생성 주의사항
        • 단일 항목의 경우
          • 하나의 항목으로 구성된 튜플은 생성 시 값 뒤에 쉼표를 붙여야 함
        • 복수항목의 경우
          • 마지막 항목에 붙은 쉼표는 불필요
      • 튜플 대입이란?
        • 우변의 값을 좌변의 변수에 한 번에 할당하는 과정
      • 튜플은 일반적으로 파이썬 내부에서 활용
        • 추후 함수에서 복수의 값을 반환하는 경우에도 활용
    • Range

      • 숫자의 시퀀스를 나타내기 위해 사용
        • 기본형 : range(n)
          • 0부터 n-1까지의 숫자의 시퀀스
        • 범위지정 : range(n,m)
          • n부터 m-1까지의 숫자의 시퀀스
        • 범위 및 스텝 지정 : range(n,m,s)
          • n부터 m-1까지 s만큼 증가시키며 숫자의 시퀀스
    • 패킹/언패킹

      • 패킹
        • 대입문의 좌변 변수에 위치
        • 우변의 객체 수가 좌변의 변수 수보다 많을 경우 객체를 순서대로 대입
        • 나머지 항목들은 모두 별 기호 표시된 변수에 리스트로 대입
      • 언패킹
        • argumernt 이름이 *로 시작하는 경우,
    • Set

      • 순서없이 0개 이상의 해시가능한 객체를 참조하는 자료형

        • 해시 가능한 객체(immutable)만 담을 수 있음
      • 담고있는 객체를 삽입 변경, 삭제 가능 -> 가변자료형

      • 수학에서의 집합과 동일한 구조를 가짐

        • 집합 연산이 가능
        • 중복된 값이 존재하지 않음
      • 중복없이 순서가 없는 자료구조

        • 중괄호({})혹은 set()을 통해 생성
          • 빈 set을 만들기 위해서는 set()을 반드시 활용해야 함
        • 순서가 없어 별도의 값에 접근할 수 없음
      • 셋을 활용하면 다른 컨테이너에서 중복된 값을 쉽게 제거할 수 있음

        • 단, 이후 순서가 무시되므로 순서가 중요한 경우 사용할 수 없음
    • Dictionary

      • key와 value가 쌍으로 이뤄진 자료구조
      • 각 key의 value는 어더한 형태든 관계 없음
        • key는 변경 불가능한 데이터만 활용 가능
          • string, integer, float, boolearn, tuple, range
        • value는 모든 값으로 설정 가능 (List, Dictionary)
      • 중괄호({})혹은 dict()를 통해 생성
      • key를 통해 value에 접근
    • 형변환

      • 파이썬에서 데이터 형태는 서로 변환할 수 있음
        • 암시적 형 변환(implicit)
          • 사용자가 의도하지 않고, 파이썬 내부적으로 자료형을 변환하는 경우
          • bool, Numeric type (int, float, complex)
        • 명시적 형 변환
          • 사용자가 특정 함수를 활용하여 의도적으로 자료형을 변환 하는 경우
          • 형식에 맞는 문자열만 가능
          • int
            • str*, float
          • float
            • str*, int
          • str
            • int, float, list, tuple, dict
  • 연산자

    • 산술연산자

      • 기본적인 사칙연산 및 수식계산

      • 나눗셈 시리즈

        a / b
        a // b 
        a%b 
        divmod(a,b)
  • 비교연산자

    • 값을 비교하며, True/False값을 리턴함

      a = [1,2,3]
      b = [1,2,3]
      print(a is b)
      #False
      #id 값이 다르기 때문에 값은 같지만 위치는 달라서 (a is b)는  False
      #정수는 id도 같다 
  • 논리연산자

    • 일반적으로 비교연산자와 함께 사용됨

    • 단축평가

      • 결과가 확실한 경우 두번째 값은 확인하지 않고 첫번째 값 반환

      • and 연산에서 첫번째 값이 False인 경우 무조건 False => 첫번째 값 반환

      • or 연산에서 첫번째 값이 True인 경우 무조건 True => 첫번째 값 반환

        a = 5 and 4
        print(a)
        
  • 복합 연산자

    • 복합 연산자는 연산과 대입이 함께 이뤄짐
      • ex) 반복문을 통해서 개수를 카운트 하는 경우
  • 식별연산자

    • is 연산자를 통해 동일한 객체인지 확인
  • 멤버십 연산자

    • 포함 여부 확인
      • in, not in
  • 시퀀스형 연산자

    • 산술연산자 (+)
      • 시퀀스 간의 연결/연쇄
    • 반복연산자(*)
      • 시퀀스를 반복
  • 인덱싱

    • 시퀀스의 특정 인덱스 값에 접근
      • 해당 인덱스가 없는 경우 IndexError
  • 슬라이싱

    • 시퀀스를 k간격으로 슬라이싱
    • 시퀀스를 특정 단위로 슬라이싱
  • set 연산자

    • | : 합집합 & : 교집합 -: 여집합 ^ : 차집합
  • 프로그램 구성 단위

    • 표현식
      • 새로운 데이터 값을 생성하거나~
    • 함수
    • 모듈
    • 패키지
    • 라이브러리
profile
내가 공부한 내용들이 누군가에게 도움이 될지 몰라서 쓰는 벨로그

0개의 댓글

관련 채용 정보