본문 바로가기

파이썬/파이썬 기초

python 프로그래밍 기초

python 포스팅을 시작합니다

이번 python포스팅에서는 프로그래밍의 개념과 값처리와 리터럴, 표현식의 개념을 배워보겠습니다. 왜 어셈블리어 대신 파이썬과 같은 언어를 쓰는지 프로그래밍의 기본적인 개념에서부터 자세하게 살펴보겠습니다. 그리고 python에서 많이 사용하는 값(Value)과 리터럴(literal), 표현식(expression)도 알아보겠습니다.

python 프로그래밍


python 포스팅의 내용을 바탕으로 <반드시 알아야 할 파이썬 입문 A to Z>이라는 책을 정리했습니다. 책으로 구매하여 공부하고 싶은 분들은 아래 링크를 클릭하길 바랍니다.

 

반드시 알아야 할 파이썬 입문 A to Z

 

파이썬 입문 A to Z

파이썬을 파이썬 방식으로 구현하는 것은 문법보다는 개념...

www.kyobobook.co.kr

 

python 시작하기

python 프로그래밍이란

프로그래밍(Programming)은 프로그램(Program)에 -ing를 붙인 말로, ‘프로그램을 만들다’라는 뜻입니다. 프로그램은 어떤 목표를 이루기 위해 컴퓨터에 내리는 계획을 세우는 것이라고 할 수 있습니다.


어떤 목표를 위해 컴퓨터에 내리는 명령들을 모아놓은 것이라 생각하면 더욱 쉽습니다. 인터넷 브라우저에서 google.com을 입력하고 엔터를 누르면 구글 페이지로 이동합니다. 이런 기능을 이용할 수 있는 것은 관련 명령들이 작성되어 인터넷 브라우저 프로그램에 들어있기 때문입니다.

 

프로그래밍 언어는 프로그램을 만들 때 쓰는 언어입니다. 이제부터 배울 파이썬도 프로그래밍 언어입니다. 사람들은 왜 머리 아프게 굳이 새로운 프로그래밍 언어를 만들었을까요? 사람은 한국어, 영어와 같은 언어를 사용합니다. 이런 사람이 쓰는 언어를 자연어라고 합니다.

 

하지만 컴퓨터는 전기를 사용하여 1과 0으로만 이루어진 기계어(Machine Code)를 쓰기 때문에 자연어와 기계어를 연결해 주는 언어가 필요했기 때문입니다.

 

모스부호를 아나요? 아래 그림처럼 생긴 기계를 써서 짧은 전류(•)와 긴 전류(-)를 적절히 조합하여 문자나 숫자 정보를 보냅니다.

python 전신기

 

짧은 전류, 긴 전류를 보내면 A라는 뜻이 됩니다. 영화 ‘인터스텔라’에서도 주인공인 조셉 쿠퍼가 5차원 공간에서 모스부호를 이용해서 메시지를 전달합니다.

 

기계어는 이 모스부호와 같습니다. 전기 신호를 이용하여 1과 0으로 정보를 표현합니다. 1과 0으로 정보를 표현하는 방법을 이진법이라고 합니다. 이것은 컴퓨터가 스위치를 켜고(1) 끄는(0) 원리를 이용해서 만들 어졌기 때문이지요.

 

따라서 사람의 언어를 1과 0으로 된 기계어로 바꿔줘야 합니다.

모스부호

 

 

프로그래밍 언어가 없던 시절에는 기계어로 직접 프로그램을 만들어야 했습니다. 1과 0으로만 이루어진 명령어를 기억해서 프로그램을 만든다고 생각해보세요. 엄청 어렵고 불편했겠죠? 그래서 어셈블리어(Assembly Language)를 만들었습니다.

 

어셈블리어는 1과 0으로 된 기계어 명령을 알아보기 쉬운 단어로 표현했습니다. 예를 들어, 1001011101011000이 데이터를 이동시키라는 명령어라면 1001011101011000 = move라고 표현한 것이죠.

 

어셈블러(Assembler)라는 번역 프로그램이 move를 1001011101011000로 바꿔주므로 영어 단어만 기억하면 기계어보다 더 쉽게 프로그래밍할 수 있게 되었습니다. 나라마다 다양한 언어를 사용하는 것처럼, 기계의 종류에 따라서 기계어도 달라집니다. 마찬가지로 어셈블리어도 달라지죠.


컴퓨터에서 기계는 바로 중앙처리장치(Central Processing Unit)를 의미합니다. 바로 CPU라는 것이죠. 컴퓨터의 모든 연산은 CPU에서 일어납니다. 우리가 기계어나 어셈블리어로 명령어를 내리는 대상도 CPU입니다. 그런데 어셈블리어도 사용하기 불편했습니다.

 

큰 프로그램은 어셈블리어로 만들기 힘들고, 만들고 나서고 어떤 기능을 하는지 알아보기 힘들기 때문입니다. 그리고 CPU마다 다른 기계어를 모두 배워서 프로그램을 만들어야 했습니다.

 

어셈블리어의 불편함을 해결하기 위해 고급 프로그래밍 언어가 나왔습니다. 파이썬도 고급 프로그래밍 언어입니다. 기계어, 어셈블리어는 저급 프로그래밍 언어라고 합니다. 여기서 말하는 고급과 저급은 ‘좋다, 나쁘다’의 뜻이 아닙니다. 고급은 ‘사람에게 가깝다’라는 뜻이고, 저급은 ‘기계에 가깝다’ 라는 뜻입니다.

 

고급언어: 사람에게 가깝고, 기계는 이해할 수 없다.
저급언어: 기계에 가깝고, 사람은 이해하기 힘들다.

 

기계가 이해하지 못하는 고급언어로 프로그래밍하면 소용이 있을까요? 프로그램은 기계가 이해할 수 있어야 실행할 수 있는데 말이죠. 그래서 고급언어를 저급언어로 바꿔주는 ‘통역사’가 필요합니다. 이 통역사가 우리가 작성한 코드를 기계가 이해할 수 있는 기계어로 바꿔주면 됩니다. 통역사 역할을 하는 프로그램을 번역 프로그램이라고 합니다.

 

번역 프로그램은 크게 두 종류로 구별할 수 있습니다. 컴파일러(Compiler)와 인터프리터(Interpreter)입니다. 컴파일러는 코드를 작성해 만든 파일을 처음부터 끝까지 한꺼번에 번역합니다. 인터프리터는 한 번에 한 줄씩 번역하면서 동시에 기계어를 실행합니다.


C언어는 컴파일러를 사용하고, 파이썬은 인터프리터를 사용합니다. C언어는 우리가 작성한 코드를 기계가 이해할 수 있도록 컴파일(번역)합니다. 그리고 여러 과정을 거쳐서 실행 가능한 프로그램(.exe)을 만듭니다. 그래서 컴파일 언어라고 합니다.


파이썬은 스크립트 언어라고 합니다. 컴파일하지 않아도 한 줄씩 읽으면서 동시에 프로그램을 실행합니다. 우리는 스크립트 언어인 파이썬으로 프로그래밍의 기초를 배울 겁니다.

 

값(value) 처리

사람에게는 장기기억과 단기기억이 있습니다. 어떤 것을 오랫동안 기억할 수 있고, 전화번호를 외우는 것처럼 잠시만 기억할 수도 있습니다. 마찬가지로 컴퓨터도 어떤 값을 저장하기 위해 주기억장치(RAM)와 보조기억장치(하드디스크/SSD)를 사용합니다.


주기억장치는 단기기억처럼 용량이 적어 정보를 잠깐 기억하지만, 처리속도는 빠릅니다. 또한, 전기를 끊으면 정보가 다 날아가 버립니다(휘발성). 보조기억장치는 처리속도는 느린 대신 용량이 커서 오랫동안 기억할 수 있습니다. 전기를 끊어도 정보가 날아가지 않습니다(비휘발성).

 

컴퓨터는 어떠한 일을 하기 위해서 모든 데이터를 보조기억장치에서 주기억장치(RAM)로 읽어야 합니다. 중앙처리장치 (CPU)가 주기억장치의 내용을 읽어 데이터를 처리합니다.

 

우리가 프로그램을 작성하고 실행하면 그 프로그램은 주기억장치에 복사됩니다. 이때 명령어가 저장되는 영역과 데이터가 저장되는 영역이 나뉘어 복사됩니다. 주기억장치를 ‘메모리’라고 합니다. 어떤 데이터를 저장하거나 가져와서 사용하려면 어디에 저장됐는지 주소를 알아야 합니다.

 

주기억장치는 바이트(byte)마다 주소가 지정되어 있습니다. 바이트를 이해하기 위해선 우선 비트(bit)의 개념부터 알아야 합니다. 비트는 이진수를 뜻하는 ‘Binary Digit’의 약자로, 컴퓨터의 CPU가 처리하는 데이터의 최소 단위 크기입니다. 1비트는 0과 1을, 2비트는 00, 01, 10, 11 등 4개의 데이터를 처리할 수 있다는 의미입니다. 비트 8개를 바이트라고 합니다.

주기억장치-메모리(RAM)

 

주소는 숫자이므로 프로그램을 작성하려면 ‘30주소의 값을 읽어서 40주소의 값과 더하여 50주소의 값에 저장하라’ 등의 명령을 내리게 됩니다. 사람이 모든 주소를 기억해 처리하기가 어렵습니다. 그래서 주소에 이름을 붙여 ‘이곳은 name이라고 하고 저곳은 age라고 하자’는 것이 변수입니다. 파이썬은 메모리에 데이터를 저장해 프로그램을 만드는데 이 저장된 데이터가 값(value)이 됩니다.

 

리터럴(literal)

리터럴은 프로그래밍 언어로 작성된 코드의 ‘값’ 그 자체로 고정된 값을 나타냅니다. 파이썬에는 다양한 종류의 리터럴이 있습니다. 여기서는 대표적인 리터럴의 종류를 간단히 알아보겠습니다. 자세한 것은 나중에 배우게 될 것입니다.

 

  • 숫자리터럴 : 정수 리터럴, 실수 리터럴, 복소수 리터럴 3가지가 있습니다.
  • 문자 리터럴 : 따옴표로 묶인 문자를 말합니다.
  • 논리값 리터럴 : 다음 True(참) 또는 False(거짓) 값 중 하나를 가질 수 있습니다.
  • 컬렉션 리터럴 : [ ... ]로 감싸져 있으면 리스트, ( ... )로 감싸져 있으면 튜플, { 키:값, ... }로 감싸져 있으면 딕셔너리, { ... }로 감싸져 있으면 집합

 

리터럴은 값입니다. 셀에 입력하고 실행하면 그 결과를 보여줍니다. ‘보여준다’는 것을 다른 말로 ‘출력한다’라고 합니다. 1이라고 입력하고 실행하면 자기 자신을 그대로 출력합니다. 주피터 노트북에서 숫자 1을 입력하고 실행(Shift+Enter)하면 그대로 숫자 1을 출력합니다.

python 숫자 리터럴

 

큰따옴표나 작은따옴표 사이에 문장을 쓰고 실행하면 그대로 입력한 값을 출력합니다.

문자열 리터럴

 

표현식(expression)

여러 개의 값을 하나로 묶어 처리하는 방법도 있습니다. 이런 방법을 ‘표현식’이라고 합니다. 표현식으로 작성한 것을 실행하면 결과값이 나옵니다. 표현식을 작성한 때는 일반적인 리터럴 값인 피연산자(operand)와 피연산자를 평가하거나 계산하는 연산자(operator)가 필요합니다.

 

연산자에는 하나의 연산자와 피연산자를 묶어서 처리하는 단항연산자(unary)와 하나의 연산자와 두 개의 피연산자를 묶어서 처리하는 이항연산자(binary)가 있습니다. 여러 개의 표현식을 괄호로 묶어서 처리할 수도 있습니다. 표현식의 결과는 항상 값으로 처리됩니다.

 

숫자나 문자열 사이에 연산자를 쓰면 하나의 표현식이 되고 표현식을 실행하면 결괏값이 나옵니다. 두 정수(피연산자)를 넣고 + 연산자로 두 정수를 처리하는 표현식을 실행해볼까요? 결과는 두 수를 덧셈한 결과가 출력됩니다.

python 표현식

 

두 문자열(피연산자)을 넣고 + 연산자로 처리하는 표현식을 실행하면 두 문자열이 합쳐집니다.

python 문자열 표현식

 

[다음 포스팅] 변수와 이름공간

 

파이썬강좌 변수와 이름공간

파이썬강좌 포스팅을 시작합니다 이번 파이썬강좌 포스팅에서는 파이썬의 특징을 잘 나타내는 변수를 배워보겠습니다 파이썬 다른 언어와 달리 그 값 자체를 저장하는 하는 것이 아니라 그 값이 저장된 주소를 저..

www.itple.co.kr

 

좋아요와 댓글은 큰 힘이 됩니다