파이썬 기초 문법

Andrew·2021년 1월 19일
1
post-custom-banner

[Contents]

1. Variables
2. Function and Console I/O
3. Conditionals and Loops
4. String and advanced function concept

[Variables]

  • 프로그래밍에서 가장 기초적으로 알아야 할 변수에 대해서 배운다
  • 변수와 함께 그 변수가 물리적으로 저장되는 메모리에 대해 배운다
  • 한 번에 여러 개의 변수를 함께 저장해서 화면에 표시하거나 필요한 연산을 수행하게 하는 리스트 라는 데이터 타입에 대해서 배운다
  • 변수의 개요

    • 가장 기초적인 프로그래밍 문법 개념
    • 데이터(값)을 저장하기 위한 메모리 공간의 프로그래밍상 이름
      # professor 변수에 'Sungchul Choi' 라는 값을 넣으라는 의미
      professor = 'Sungchul Choi'
  • 그럼 변수는 어디에 저장될까?

    • 프로그래밍에서는 변수는 값을 저장하는 장소
    • 변수는 물리적 메모리 주소를 가지고 있고 변수에 들어가는 값은 메모리 주소에 할당됨
  • 메모리와 변수

    • 변수 = 프로그램에서 사용하기 위한 특정한 값을 저장하는 공간
    • 선언되는 순간 메모리 특정영역에 물리적인 공간이 할당됨
    • 변수에는 값이 할당되고 해당 값은 메모리에 저장됨
    • A = 8 의 의미는 'A는 8이다' 가 아닌 A 라는 이름을 가진 메모리 주소에 8을 저장하라 라는 의미다.
  • Basic Operation (간단한 연산)

    • 복잡한 프로그램을 작성하기 앞서 간단한 사칙연산과 문자열 처리 등의 기초적인 연산을 알아야 함
    • 이를 위해 본 장에서는 아래 내용을 습득
      1) 기본 자료형 (primitive data type)
      2) 연산자와 피연산자
      3) 데이터 형변환
  • 기본 자료형 (primitive data type)

    • data type : 파이썬이 처리할 수 있는 데이터 유형
    • 데이터 타입마다 메모리가 차지하는 공간의 크기가 달리진다
      • int = 32byte
      • float = 64byte
    • Dynamic Typing =
      • 코드 실행시점에 interpreter가 변수의 데이터의 Type을 알아서 해석(파이썬의 장점)
      • 사용자에게는 쉬운 언어, 프로그래밍 속도는 늦어지는 단점
  • 컴퓨터는 왜 이진수를 쓰나?

    • 컴퓨터는 실리콘이라는 재료로 만든 반도체로 구성됨
    • 반도체는 특정 자극을 줬을 때 전기를 통할 수 있게 하는 물질
    • 도체와 부도체에 반해 반도체는 전류의 흐름의 제어가 가능
    • 전류가 흐를 때 1, 흐르지 않을 때 0으로만 숫자를 표현할 수 있음
    • 이진수 한자리를 bit라 칭하고 8개의 bit는 1byte
  • 리스트 메모리 저장 방식

    • 파이썬은 해당 리스트 변수에는 리스트 주소값이 저장됨
      a = [5,4,3,2,1], b = a
      • a와 b는 같은 공간을 가르키기 때문에 a.sort()로 a 가 가르키는 공간을 정렬시키게 되면 b의 출력값도 정렬된 공간 값을 반환한다.
      a = [5,4,3,2,1], b = a[:]
      • a와 b가 같은 공간을 가르키는 것이 아니라 b는 a의 각각의 값을 새로운 공간에 만들어주기 때문에 a.sort()를 하게 되더라고 b의 공간값은 정렬되지 않는다.
  • 이차원 리스트

    midterm_copy = midterm_score[:]
    midterm_score[0][3] = 50
    • 리스트의 복사는 1차원에서는 되지만 2차원에서는 되지 않는다.
    • 복사는([:]) midterm_score의 원소들을(리스트값) 새로운 공간에 넣는것이다.
    • 2차원에서는 원소 자체가 리스트이고 이 리스트들의 공간은 복사되지 않고 같은 공간이기 때문에
    • midterm_score[0][3] 의 값을 바꾸게 되더라고 midterm_score[0]와 midterm_copy[0] 즉, 둘의 kor_score의 공간값이 같다
    • 그렇기 때문에 midterm_score[0][3] = 50 는 midterm_copy[0][3]의 값도 50으로 바뀌게 된다.
  • 2차원 리스트를 복사하는 방법

    • copy 모듈의 copy.deepcopy를 사용하게 되면 2차원도 복사가 가능하다

[Function and Console I/O]

  • 함수란 프로그램을 개발할 때 사용되는 코드의 논리적 단위로, 가장 기본적인 코드 개발 방법 중 하나이다
  • 또한, 콘솔은 터미널이라고 불리는 컴퓨터 프로그램으로 컴퓨터에게 뭔가를 입력해서 컴퓨터가 결과를 출력하게 할 때 사용한다.
  • 함수의 개요

    • 어떤 일을 수행하는 코드의 덩어리
  • 함수의 특징

    • 반복적인 수행을 1회만 작성 후 호출
    • 코드를 논리적인 단위로 분리
      • 코드 = 하나의 보고서
    • 캡슐화 : 인터페이스(parameter, input, 매개변수)만 알면 타인의 코드 사용
  • parameter vs argument

    • parameter : 함수의 입력 값 인터페이스
    • argument : 실제 parameter에 대입된 값
  • 함수 형태

    • parameter 유무, 반환 값(return value) 유무에 따라 함수의 형태가 다름
  • Print formatting

    • 형식(format)에 맞춰서 출력을 할 때가 있음
    • 프린트 문은 기본적인 출력 외에 출력의 양식을 형식을 지정 가능
      1) % string
      2) format 함수
      3) fstring

[Conditionals and Loops]

  • 논리적인 사고 학습에 핵심이 되는 조건문과 반복문을 배운다.
  • 거의 모든 프로그램은 제어와 반복의 연속으로 하나의 프로그램을 구성하게 된다.
  • 사용자가 어떤 입력을 했을 때 그 입력에 따라 다양한 반응을 보이게 프로그램을 작성해야 하는데, 그를 이해하기 위해 필수적으로 배워야 하는 내용이다.
  • 조건 판단 중 유의사항
    • x is y 와 x is not y
      • x 와 y memory의 주소를 비교한다.
      • -5 부터 256 은 같은 메모리 주소를 먼저 사용하기 때문에 이 숫자들간의 is 비교는 True로 나온다
      • is와 is not은 메모리 주소 비교 이기 때문에 값을 비교할때는 is를 쓰지 않고 == 혹은 != 를 쓴다
    • (==, !=) : value comparison
    • (is, is not) : identity comparison
    • 예:
a = [1,2,3,4,5]
b = a[:]
a is b # False

a = 256 
print(a == 256) # True
print(a is 256) # True

a = 257
print(a == 257) # True
print(a is 257) # False
  • Debugging (디버깅)
    • 코드의 오류를 발견하여 수정하는 과정
    • 오류의 '원인'을 알고 ' 해결책'을 찾아야 함
    • 문법적 에러를 찾기 위한 에러 메세지 분석
    • 논리적 에러를 찾기 위한 테스트도 중요
      • 뜻대로 실행이 안되는 코드
      • 중간 중간 print문을 찍어서 확인

[String and advanced function concept]

  • string은 데이터를 다룰 때 가장 많이 접하게 되는 문자열 데이터를 다루는 방법에 대해서 성명한다.
  • 함수의 조금 더 높은 난이도의 개념을 배우게 된다.
  • 함수는 코드를 나누는 좋은 기준이기도 하지만 메모리의 사용이나 변수의 사용방법 등 다양한 개념들을 배워야 한다.
  • 문자열 (string)

    • 시퀀스 자료형으로 문자형 data를 메모리에 저장
    • 영문자 한 글자는 1byte의 메모리 공간을 사용
    • string은 1byte 크기로 한 글자씩 메모리 공간이 할당됨
  • 1byte의 메모리 공간

    • 컴퓨터는 2진수로 데이터를 저장
    • 이진수 한 자릿수는 1bit로 저장됨
    • 즉 1bit는 0 또는 1
    • 1 byte = 8 bit = 2^8 = 256 까지 저장 가능
  • 함수 호출 방식 개요

    • 함수에서 parameter를 전달하는 방식
      • 값에 의한 호출 (Call by Value)
        • 함수에 인자를 넘길 때 값만 넘김.
        • 함수 내에 인자 값 변경 시, 호출자에게 영향을 주지 않음
      • 참조의 의한 호출 (Call by Reference)
        • 함수에 인자를 넘길 때 메모리 주소를 넘김.
        • 함수 내에 인자 값 변경 시 , 호출자의 값도 변경됨
      • 객체 참조에 의한 호출 (Call by Object Reference)
        • 파이썬은 객체의 주소가 함수로 전달되는 방식
        • 전달된 객체를 참조하여 변경 시 호출자에게 영향을 주나, 새로운 객체를 만들 경우 호출자에게 영향을 주지 않음
        • function 내에서 새롭게 들어온 리스트값을 직접 만지지 않고 복사를 먼저 해놓고 복사된 값을 이용하는것이 더 안전하다.
  • Scoping Rule

    • 변수가 사용되는 범위 (함수 또는 메인 프로그램)
    • 지역변수(local variable) : 함수내에서만 사용
    • 전역변수(global variable) : 프로그램 전체에서 사용
  • 재귀함수 (Recursive Function)

    • 자기자신을 호출하는 함수
    • 점화식과 같은 재귀적 수학 모형을 표현할 때 사용
    • 재귀 종료 조건 존재, 종료 조건까지 함수호출 반복
  • 함수 작성 가이드 라인

    • 함수는 가능하면 짧게 작성할 것 (줄 수를 줄일 것)
    • 함수 이름에 함수의 역할, 의도가 명확히 들어낼 것
    • 하나의 함수에는 유사한 역할을 하는 코드만 포함
    • 인자로 받은 값 자체를 바꾸진 말 것 (임시변수 선언)
profile
아기개발자
post-custom-banner

0개의 댓글