2. 파이썬 기초 2.2 파이썬 기초

C급 개발자와 함게하는 파이썬

2. 파이썬 기초

2.2 파이썬 기초

화면에 Hello World를 출력하는것만으로 2%부족함을 느낄 것입니다. 여러분은 아마도 더 많은 것을 배우고 싶고 해보고 싶을 것입니다.

단순히 문자열을 출력하는 것이 아니라. 정보를 입력받고 입력받은 정보를 이용하여 가공한뒤에 결과물을 출력하는 프로그램을 만들고 싶어할 것입니다.

하지만 서두르지 마십시오. 천천히 즐기면서 배워야 오래도록 배울수 있습니다. 급하게 하다가 어려움을 느끼고 금방 싫증을 느낄수도 있습니다. 그러니 천천히 서두르지 않고 즐겁게 하나하나 익혀나가도록 하겠습니다.



이번장에서는 파이썬 프로그래밍을 하기 위한 기초가 기술되고 있습니다. 가장 기본적인것이기 때문에 꼭 알고 넘어가야하는 것입니다.


2.2.1 주석

프로그래밍 코드의 주석이란 “주석 또는 코멘트(comment)는 프로그래밍에 있어 내용을 메모하는 목적으로 쓰인다. 소스코드를 더 쉽게 이해할 수 있게 만드는 것이 주 목적이며, 컴파일러와 인터프리터에 의해 일반적으로 무시된다. “와같이 위키에 정의 되어있습니다. 우리들이 프로그래밍을 작성할때 모든 부분을 모두가 다 알면 주석이 필요없겠지만 주석은 나 이외의 사람이 보아서 그 프로그램을 이해할수 있도록 작성되어야 한다. 또한 본인도 프로그램을 한지 오랜시간이 지나면 해당 내용에 대해 이해할수 없는 부분이 있을수도 있기 때문에 최대한 상세하고 알기 쉽게 서술하는것이 제일 좋다.


파이썬에서 주석은 # 문자뒤에 오는 문장이다.


아래 내용은 주석을 붙여 프로그램에서는 작동하지 않지만 프로그램을 보는사람이 이해하기 쉽도록 했다.

아래와 같이 주석을 붙여도 프로그램 결과에는 아무런 영향이 없다. 단지 소스코드를 보고 사용자가 이해할수 있도록 하는것이다.

위의 화면에서 주석을 넣었지만 결과는 아래와 같이 주석이 없던 프로그램과 동일하다.


여러분은 프로그래밍을 작성할때 가능한한 자세한 주석을 사용하기 바랍니다.

  1. 미리 가정하고 넘어간 것들에 대한 설명

  2. 중요한 결정사항에 대한 설명

  3. 중요한 세부사항에 대한 설명

  4. 해결하고자 하는 문제에 대한 설명

  5. 앞으로 극복하려고 하는 문제들에 대한 설명 등등 최대한 이해하기 쉽게 적어야한다.


코드는 어떻게? 라는 물음에 답하지만, 주석은 왜? 라는 물음에 답해야 한다.

(Code tells you how, comments should tell you why)


출처 : https://blog.codinghorror.com/code-tells-you-how-comments-tell-you-why/


주석은 여러분의 프로그램을 읽는 사람들에게 여러분이 작성한 프로그램이 무엇을 하는 프로그램인지 쉽게 파악할 수 있도록 도움을 주는 역할을 합니다.  프로그램을 작성하고 한 6개월쯤 뒤에는 여러분이 작성한 주석이 도움을 받는 사람이 여러분 자신이 될수도 있다는 점을 꼭 기억하세요. !!!


2.2.2 리터럴 상수

리터럴 상수는 100, 3.14와 같은 숫자나, ‘hangul’, “English”와 같은 문자열 등을 말합니다.

리터럴 상수로 불리는 이유는 프로그램내에 문자 형태로(literally)지정되는 값들이기 때문입니다. 이러한 값들은 한번 지정되면 변하지 않습니다.

2 = 3과 같이 2에는 3을 대입할수 없습니다. 2는 2의 의미를 가지며 2의 의미 이외로는 지정할 수 없는것입니다. 이와 같이 한번 지정되면 그 값을 변경할 수 없기 때문에 “상수”입니다. 그 중에서도 특별히 이러한 값들을 리터럴 상수라고 부릅니다.

위과 같이 리터럴 상수에 값을 대입하려고 하는경우 리터럴 상수에는 할당할 수 없다고 에러메시지가 나옵니다.

문자열의 경우도 마찬가지로 리터럴 상수에 할당할수 없다고 나옵니다.



하지만 변수는 a = 3, b = 5 인경우 a + b = 8과 같이 나타낼수 있습니다.


여기에서 변수 a, b는 여기서는 3, 5의 값을 가지지만 a = 4, b = 12 이렇게 지정이 가능합니다. 이러한 것을 변수라 칭하고 3, 43 과 같이 대입할수 없는 상수를 리터럴 상수라고 합니다.

위에는 a, b 에 각각 다른 값을 할당하고 계산이 되는지 확인해보았다.

문자열도마찬가지로 변수에 값을 할당하는 경우 값을 변경하여 계산하여도 정상적으로 작동하는 것을 확인할수 있습니다. 


2.2.3 숫자형

파이썬에서 숫자형은 정수형(Integer)과 부동 소수점 숫자형(Float)의 두가지 종류가 있습니다. 정수는 우리가 흔히 이야기 하는 것과 같이 소수점이 없는 숫자 3, 100, 443 과 같은 숫자이며 부동 소수점 숫자는 3.23, 32.2E-4와 같은 값입니다. C/C++ 또는 자바같은 언어에서는 세분화된 숫자형을 가지고 있습니다. 그러나 파이썬에서는 이 두가지숫자형으로 모두 표현할 수 있습니다. 특히나 파이썬은 long형이 따로 없이 Integer형에 어떤 크기의 정수든지 담을수 있습니다.


정수형과 부동 소수점 숫자형을 간단하게 나타내면 위와 같이 나타낼 수 있습니다.



2.2.4 문자열

문자열이란 “문자”의 “나열”을 뜻합니다. 자바의 String C++에서의 CString과 같이 문자들의 집합을 나타내는 형식입니다. 파이썬에서 문자열 데이터형은 str이라고 하며 입력하고자 하는 문자열을 작은 따옴표로 감싸거나 큰 따옴표로 감싸면 문자열로 인식한다. 프로그래밍을 하기 위해서 가장많이 사용하게 될것이 바로 이 문자열입니다. 중요한 내용이기 때문에 유심히 살펴보아야 합니다.




2.2.4.1 작은 따옴표

파이썬에서는 작은 따옴표를 이용하여 문자열을 지정할 수 있습니다. 예를 들어 ‘C급 개발자와 함께하는 파이썬’과 같이 하면 됩니다.

모든 공백 문자, 즉 띄어쓰기나 탭 등은 입력한 그대로 유지합니다.

위와 같이 작은따옴표로 시작해서 끝나는 경우 문자열로 인식합니다. 하지만 중간에 작은따옴표를 넣는경우 오류를 발생시킵니다. 중간에 큰따옴표를 넣는경우 정상적으로 인식합니다.

만약 작은따옴표 안에 작은따옴표를 넣기 위해서는 이스케이프문자인 \(역슬래시)를 입력하면 따옴표안의 문자열로 인식합니다.

위와같이 사용하면 작은따옴표도 작은따옴표 문자열안에 입력이 가능합니다.


2.2.4.2 큰 따옴표

작은따옴표와 동일하게 사용가능합니다.

작은따옴표 위치에 큰따옴표를 위치하고 큰따옴표 위치에 작은 따옴표를 위치시키면 정확하게 작은따옴표와 큰따옴표의 사용법이 일치하는것을 알수 있습니다.


2.2.4.3 따옴표 세개

작은따옴표 세개 또는 큰 따옴표 세개는 여러줄에 걸쳐 출력하기 위한 문자열입니다. 아래와 같이 작은따옴표 세개나 큰따옴표 세개나 동일한 출력을 나타내고 있습니다.


Ipython에서는 아래와 같이 큰 따옴표는 오류가 발생하고 있습니다.


2.2.4.4 문자열은 수정이 불가

파이썬에서 이부분은 다소 개념이 어렵다. 파이썬에서 문자열형은 모두 변할 수 없는(Immutable) 데이터형들이다. 예제를 통해 알아보자

위의 예를 보자 처음 target 문자열은 Earth로 할당되었으며 id는 위와 같이 4330381128이었다 그런데 target에 Mart를 할당하고 id를 확인하면 4330381240을 나타내 서로다른 id 값을 가지는것을 알수 있습니다. 다른 언어는 동일한 변수에 값을 새롭게 할당하는 동일한 주소에 값을 바꿔쓰는 언어가 있기도 하지만 파이썬은 문자열이 변경되면 값을 저장하고 있는 id값도 변경됩니다.

2.2.4.5 문자열 포매팅

파이썬에서 문자열을 생성하려고 할 때, 종종 다른 정보드을 포함하여 생성하고 싶을 때가 있습니다. 이것을 문자열 포매팅이라고 하며, 이를 위해서는 format()을 이용합니다.


문자열에 값을 변경하기 위해 아래와 같이 해보도록 하겠습니다.

{0} {1} 과 같은 방법으로 문자열을 해당 부분에 끼워넣기해서 문자열을 변경합니다.

동작원리는 먼저 중괄호로 표현된 특별한 표시들이 포함된 문자열을 만들고, 그 후에 문자열의 format메소드를 사용하여 이 표시들을 format메소드에 주어진 인자들로 치환한 것입니다.


위 예시에서는 문자열 내에서 첫번째로 {0}이 사용되었으며 이것은 format메소드에 주어진 첫번째 인자, 즉 변수 name에 해당됩니다. 마찬가지로, 두번째 사용된 표시는 {1}이며 이것은 format 메소드에 주어진 두번째 인자인 age에 해당합니다. 파이썬은 숫자를 셀 때 항상 0부터 세는것에 유의 하세요. 즉 첫번째 인자의 인덱스는 0이며, 두번째는 1입니다.


또한 다음과 같이 문자열 더하기를 이용하여 동일한 결과를 얻을 수도 있습니다.

그러나 이것은 깔끔하지 못하며, 작성 중 실수하기도 쉽습니다. 또한 각각의 변수를 일일이 명시적으로 문자열로 변환시켜주어야 합니다. 하지만 format메소드를 이용하는 경우 알아서 자동으로 문자열로 변환해 줍니다. 또 format 메소드를 이용할 경우 변수들을 신경쓰지 않고 문자열의 내용을 수정하기 쉽고, 문자열에 신경쓰지 않고도 변수의 위치나 순서등을 변경하기가 더 쉽습니다.


이 때 중괄호 내에 주어진 숫자는 생략가능합니다.

위와 같이 중괄호안에 숫자를 빼는경우에도 정상적으로 출력되는것을 확인할 수 있습니다.


파이썬의 format은 중괄호 표시의 위치에 주어진 인자들의 값을 치환해서 넣어줍니다. 이때, 중괄호 표시에 다음과 같이 좀 더 상세하게 세부사항 지정이 가능합니다.


2.2.4.6 이스케이프(Escape)  문자


파이썬에서 이스케이프 문자는 위에서 보았듯이 작은따옴표로 이루어진 문장의 중간에 작은따옴표를 넣기위해서 사용된다.


이스케이프 문자열


이스케이프 순서열

하는 일

\\

역슬래시(\)

\’

작은 따옴표(‘)

\”

큰 따옴표(“)

\a

ASCII벨소리(BEL)

\b

ASCII 백스페이스(BS)

\f

ASCII 폼 피드(formfeed)(FF)

\n

ASCII 줄 바꿈(linefeed)(LF)

\N[Name]

유니코드(unicode) 데이터베이스에서 name이라는 이름이 붙은 문자(유니코드 전용)

\r

ASCII 캐리지 리턴(carrage return)(CR)

\t

ASCII 수평탭(TAB)

\uxxx

16비트 16진수 xxxx에 해당하는 문자(유니코드 전용)

\Uxxxxxxxx

32비트 16진수 xxxxxxxx에 해당하는 문자(유니코드 전용)

\v

ASCII 수직 탭(VT)

\ooo

8진수 값 oo에 해당하는 문자

\xhh

16진수 값 hh에 해당하는 문자


위의 문자열은 오류가 발생했지만 아래는 이스케이프 문자열을 입력하여 정상적으로 출력되는것을 확인할수 있습니다. 큰 따옴표도 위와 정확하게 같습니다.



2.2.4.7 순 문자열

문자열 내에 포함된 이스케이프 문자등을 처리하지 않고 그대로 출력하고 싶을때 문자열 앞에 r 또는 R문자를 붙여 순(Raw)문자열임을 표기합니다.




2.2.5 변수

리터럴 상수만 사용하여 프로그램을 작성할수는 없습니다. 프로그래밍을 하기 위해서는 정보를 담고, 수정이 가능한 공간이 필요합니다. 이러한 역할을 하는것이 바로 “변수”입니다. 변수는 이름 그대로 변할수 있는 공간을 말하며, 변수에는 무엇이든 저장할수 있습니다. 변수들은 단순히 정보를 저장할 때 사용되는 컴퓨터의 기억 장치의 한 부분을 가져다가 적당한 이름을 붙여 사용하는 것입니다. 리터럴 상수와는 다르게, 변수들은 프로그램 내에서 여러 방법을 통해 변경되고 사용되고 있습니다. 그렇기 때문에 한눈에  알아보기 쉬운 이름을 지어주는것이 프로그램을 개발할때 유리하게 작용합니다.


2.2.6 식별자 이름 짓기

변수 이름은 식별자의 한 예입니다. “식별자”란 프로그램을 작성할 때 무엇인가를 식별하기 위해 주어진 그것의 이름입니다. 식별자를 짓는 규칙은 아래와 같습니다.


  • 식별자의 첫 문자는 알파뱃 문자이거나 밑줄이어야 합니다.

  • 나머지는 문자, 밑줄, 또는 숫자가 될수 있습니다.

  • 식별자는 대/소문자를 구분합니다. myname과 MyName 은 다릅니다.

  • 예를 통해 알아보겠습니다.

식별자가 3(숫자)로 시작하는경우 오류를 발생시킨다. 그리고 myname에 David를 할당하고 MyName을 호출하면 MyName이 선언되지 않았다고 오류를 발생시킨다.


변수의 식별자 이름을 짓는것은 대단히 중요합니다. 프로그램을 개발하는 생산성에도 영향을 미치고 더좋은 품질의 프로그램을 만들어 내기도 합니다. 식별자를 사용할 때는 심혈을 기울여서 사용하여야 할 것입니다.


2.2.7 자료형

변수는 여러 가지 “자료형”의 값을 담을수 있습니다. 이러한 자료형은 숫자형, 논리형, 문자열형등으로 구성되어있습니다.


2.2.8 객체

파이썬에서 사용하는 모든것은 객체 입니다. “그것” 이라고 표현하는 대신, “그 객체”라고 말합니다.


위키백과에서는 아래와 같이 정의하고 있다.

“컴퓨터 과학에서 객체 또는 오브젝트(object)는 저장공간에서 할당되어 값을 가지거나 식별자에 의해 참조되는 공간을 의미하며, 변수, 자료 구조, 함수 또는 메소드가 될 수 있다. 프로그래밍 언어는 변수를 이용해 객체에 접근하므로 객체와 변수라는 용어는 종종 함께 사용된다. 그러나 메모리가 할당되기 전까지 객체는 존재하지 않는다.


절차적 프로그래밍에서 하나의 객체는 자료나 명령을 포함할 수 있지만 두 가지를 동시에 포함하지는 않는다. (명령은 프로시저나 함수의 형태를 가진다). 객체지향 프로그래밍에서 객체는 클래스의 인스턴스이다. 클래스 객체는 자료와 그 자료를 다루는 명령의 조합을 포함하여 객체가 메시지를 받고 자료를 처리하며 메시지를 다른 객체로 보낼 수 있도록 한다.


실세계의 유추로 설명하자면, 만약 어떤 사람이 집에서 살기를 원할 때, 그 집의 청사진(집의 사진)이나 축소 모형 따위는 전혀 필요가 없다. 필요한 것은 설계에 맞는 실제 집이다. 이 유추에서 청사진은 클래스를 나타내고 실제 집은 객체를 나타낸다.”

파이썬은 강력한 객체지향 프로그래밍 언어이다.



2.2.9 들여쓰기

파이썬에서 공백은 중요한 역할을 하고 있습니다. 사실, 한 행의 앞에 붙어 있는 공백이 대단히 중요합니다. 이것을 “들여쓰기(Indent)”라고 부릅니다. 하나의 논리적 명령행의 앞에 붙어 있는 공백(빈 칸 혹은 탭)은 논리적 명령행의 들여쓰기 단계를 의미하며, 이것은 한 명령의 범위를 구분하는데 사용됩니다.


이것은 같은 들여쓰기 단계 있는 명령들은 반드시 같은 들여쓰기를 사용해야 함을 의미합니다.

이러한 같은 들여쓰기를 사용하고 있는 명령들의 집합을 블록(block)이라고 부릅니다. 뒷장에서 예제를 통해 블록에 대해 다루게 될 것입니다.


지금 여러분이 기억하셔야 할 것은 잘못된 들여쓰기는 오류를 일으킨다는 것입니다.


첫번째줄은 공백이 없어 문제없이 실행되었습니다. 그러나 두번째는 프로그램이 시작하는 공백에 문제가 있어 오류가 발생하였습니다. 오류이름을 잘 보았다가 나중에 동일한 오류가 나오면 수정하시기 바랍니다.




2.3 요약

지금까지 파이썬의 여러 기본적인 특징에 대하여 알아보았습니다. 이러한 특징을 잘 익혀두면 이후 공부에 수월할 것입니다. 앞의 내용을 이해하지 못하고 넘어가는경우 이후 배움에 문제가 있을수 있으니 꼭 숙지하고 예제로 나와있는 코드 부분을 코딩하면서 오류가 나면 오류나는 이유를 찾아보고 하나하나 오류를 없애가면서 나의 실력을 향상시켜 가는 것입니다.


댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.