언어별 정리 자료/Python

이해하기 쉬운 Python 3.6 - 2회차

sshrik 2017. 4. 30. 12:12

이해하기 쉬운 Python 3.6 - 2회차

파이썬으로 연산하기

이번에는 Python 에서 변수와 함수의 기본 개념, 계산하는 방법과 변수의 형태에 대해서 간단하게 볼 예정입니다.


본 글에서의 예제는 Interactive Shell ( window + R -> cmd -> python을 통해 나오는 화면 ) 에 작성 해도 좋고, IDLE에 작성 해도 좋습니다. 보통은 IDLE를 사용하여 진행합니다.





파이썬의 대부분의 기능은 함수와 변수로 구성되어 있습니다.



위와 같은 이차 방정식에서 x 는 1, 2, 3 같은 정수 값이 들어가거나 0.1, 0.2 같은 소수 값이 들어 갈 수 있습니다. 또한 f(x) 는 그러한 입력 x 에 대해 어떠한 값 하나를 출력합니다.





변수란?

이렇게 x의 값이 계속해서 변할 수 있기 때문에 x 는 변수라고 합니다.

또한 변수를 통해서 f 라는 함수는 어떠한 결과( 위의 경우는 x값에 따른 결과 )를 도출 해 내는 기능을 합니다.

x 에 1 을 집어 넣은 함수의 결과는 f( 1 ) 과 같이 표현 가능합니다.


이때, x 에 1 을 집어 넣는다 라고 하는 것을 x 에 1을 대입한다 라고 합니다.

또한 Python 에서 전에 없던 변수를 사용하겠다고 약속 하는 것을 선언한다 라고 합니다.


변수의 선언은 "변수_이름 = 값" 과 같이 선언할 수 있습니다.


이는 Python 에서는 다음과 같이 표현 가능합니다.


※이 때 # 뒤에 쓴 것은 주석, 설명(Comment) 로 무시하셔도 좋은 글입니다. 설명을 위해 추가한 글 입니다.


우리는 이러한 변수와 숫자들로 계산이 가능합니다. ( 앞으로는 연산이라고도 하겠습니다. )


연산에는 사칙연산( +, -, / , * ) 뿐만 아니라 나머지, 제곱 연산까지 가능하게 구현이 되어 있습니다.


또한 다른 언어와는 다르게 한번에 여러 변수에 한번에 값을 대입 / 선언이 가능합니다.




다만 다음과 같은 형태로 변수의 대입 / 선언은 불가능합니다.




이 때, 변수에는 변수의 형태가 정해져 있습니다.

기본 변수 형태는 int, float, string, boolean 등 입니다.

변수의 형태는 type() 함수를 통해 알 수 있습니다.





함수란?

위와 같은 형태를 고등학교를 정상적으로 졸업하였다면 볼 수 있었을 것 입니다.

우리는 이러한 형태를 x 에 대한 함수 f 라고 합니다.


즉, g(x) 는 x 에 대한 함수 g, f(y) 는 y 에 대한 함수 f 라고 할 수 있습니다.


이러한 함수는 입력 값, 기능, 결과 값을 가집니다.


컴퓨터 공학적인 함수는 수학적인 함수와 다소 다른점을 가지고 있습니다. 먼저 컴퓨터 공학적 함수의 의미는 어떠한 행동 / 기능 이라고 생각 하시면 됩니다.

- 물론 함수의 입력은 int / float / string 등 다양한 값을 가질 수 있습니다. 심지어는 함수가 함수의 입력으로 들어 갈 수 있습니다. 이에대한 자세한 내용은 후에 배우도록 합니다.






함수란? - 결과값

예를 들어 위에서 정의한 f( x ) 함수와 같은 경우에는 f(2)는 9 의 결과 값을 가집니다.


이러한 결과 값을 가진다는 말을 컴퓨터 공학적으로는 결과 값을 반환한다, 결과 값을 return 한다, 혹은 간단하게 return 한다 라고 합니다.


- 함수의 출력은 반드시 있어야 하는 것은 아닙니다. 또한 함수의 출력은 함수의 정상적인 종료 등의 의미 등의 여러 의미를 가질 수 있습니다. 이 또한 후에 더 자세히 배울 예정입니다.




함수란? - 입력

이러한 프로그래밍에서의 함수의 입력은 수학적인 형태로 고정되지 않습니다.


즉, f( x ) 처럼 입력이 한개만 있는 것이 아니라, f( a, b, c, d ... ) 처럼 여러개의 입력, 혹은 아무런 입력을 받지 않을 수 있습니다.


또한 a, b, c, d... 는 숫자만 입력 받는 것이 아니라, 무슨 변수의 형태든 받을 수 있습니다. 다양한 변수의 형태는 후에 더 배우기로 합니다.


이 때, a, b, c, d 같은 입력 값 변수들을 파라미터( parameter, 인자 ) 라고 합니다.

- 함수의 출력처럼 반드시 필요한 값은 아닙니다.



함수란? - 기능

예를 들어 사람의 함수는 팔을 움직인다거나, 말을 한다거나 하는 것을 의미합니다.

또한 함수의 기능도 수학적인 형태로 고정되지 않습니다.


f(a, b, c, d ) 처럼 숫자를 입력 받아서 이 중에 가장 큰 수를 반환한다. 라던가


g( a, b, c, d ) 를 문자열( String ) 의 형태로 입력 받아서 '가장 길거나 짧은 문자열을 반환한다.' 같은 기능을 수행 가능합니다.




위에서 썻던 type(a) 함수 같은 경우는 어떤 입력이든 입력을 받은 뒤, 그 입력에 대한 데이터 형태를 반환 합니다.


type(30) 은 int 라는 type 형태의 변수 형태를 return 합니다. 

( 정확히는 type class 를 return 합니다. Class 에 대한 내용은 뒤에서 다룰 내용이나, 쉽게 설명하자면 사용자가 만들 수 있는 데이터 형태라고 생각하시면 됩니다.)





또한 지난 시간에 살펴 보았던 print 함수 같은 경우도 함수라고 할 수 있습니다. print( a ) 로 a 의 입력을 받아서, a 의 내용을 화면에 출력합니다.


지난 시간에는 a 를 "hello wolrd!"로 입력 해 주었습니다.


- 출력이 없는 형태의 대표적인 예인 print() 함수.


이 때, a 는 string 으로 들어와야 하나, 변수가 int 인 경우 형 변환을 통해서 형 string 으로 형태를 변환 해 줍니다.


print() 함수는 그 함수의 기능인 "화면에 출력"만을 목표로 하는 반환값(Return 값) 이 없는 함수 입니다. ( 이러한 함수를 void 형 함수라고 합니다. )





형 변환( Type Casting ) 이란?

int, float, string 등 프로그래머는 변수의 형태를 고정 해 두고 사용 해야 합니다. 이는 컴퓨터가 변수를 컴퓨터의 메인 메모리( RAM ) 에 저장하기 위해서 라고만 알아두면 됩니다.


이 때, 변수의 형태가 고정 되어 있기 때문에, 우리는 30 이라는 "숫자"와 30이라는 "글자( 문자열 )"을 따로 가질 수 있는 것 입니다.


예를 들어 a = "30" 에서 a 는 string 형태, b = 30 에서 b 는 int 형태, c = 30.0 에서 c 는 float 형태입니다.


이 때, 이러한 형태들이 있을 때, 우리는 프로그래밍을하다 보면 int 형 변수 b 를 string 으로 바꿀 필요가, 혹은 30.0 의 float 형 변수를 int 형 변수로 바꿔야 할 필요가 있을 수 있습니다.



이 때 쓰는 함수가 형 변환 함수 입니다.( 동생 변환이 아니다. )


형 변환 함수는 바꿀 변수 type 뒤에 () 를 쓰고, 입력으로 특정 변수를 주면 됩니다.



다음은 숫자, 변수들로 계산 가능한 예시입니다.





Error?!


어떤 특정한 수를 0으로 나누게 된다면, 수학적으로는 무한대가 나올 것 입니다. 그러나 이러한 경우 컴퓨터에서는 연산 방식이 정해져 있지않거나, 프로그램별로 다른 결과를 내야 할 것 입니다.


이에 대해  Python 프로그램은 이러한 결과의 처리를 요구합니다. 이러한 요구가 Error 라고 합니다.


연산 방식이 정해져 있지 않거나, 프로그램의 수행에 중대한 영향을 끼치는 경우에 Error 가 뜬다 라고 표현을 합니다.


Error 는 여러 종류가 있을 수 있지만, 그에 관련된 내용은 후에 다루기로 합니다.


0으로 나누는 Error 를 ZeroDivisionError 라고 하며, 이러한 Error 들은 보통 프로그램이 종료되도록 설계되어 있습니다. ( 물론 나중에 더 배운 다음에는 종료시키지 않을 수 있습니다. )



또한 String 과 int 를 더하려고 할 때, 혹은 float 과 String 을 더하려고 할 때 등에도 이러한 Error 가 나타날 수 있습니다.


대부분의 Error는 나오는 줄을 읽어서 해결 가능하므로 너무 무서워하지 맙시다.





String

String 은 글자( 문자, Character )의 나열된 형태입니다. 보통 "" 으로 표현하거나 '' 으로 묶어서 표현 가능합니다. 둘 모두 String입니다. 어떤 것을 사용해도 좋으나, 둘을 섞어서 쓰는것은 불가능 합니다.


예를 들어 "abcdefg" 나 'abcdefg' 로 나타낼 수 있습니다.

또한 print("hello world!") 처럼 print 함수에 인자( 입력 ) 값으로 넘겨준 것이 String 값입니다. ( 역시 여기도 'hello world!' 로 넘겨 줄 수 있습니다. )


이때 String은 꼭 한줄로만 나타낼 필요가 없습니다.

''' 이나 """ 으로 String을 선언한다면, 여러 줄에 걸쳐 쓸 수 있습니다. 물론 닫을 때에도 3개씩 써 주어야 합니다.



\ 를 쓰게 되면 여러 줄에 걸쳐 한 줄을 작성 가능합니다. 


String 역시 변수의 한 형태 이므로 편하게 변수에 대입하면 됩니다.


특이하게도 String과 int 형 변수는 * 연산에 대해 정의가 되어 있습니다.



과 같이 특정 String 을 int 번 반복 한 결과를 return 합니다.





Escape Sequence

String에 \ 라는 문자, 혹은 ", ' 같은 글자를 입력하기 위해서 필요한것이 Escape Sequence 입니다.


\" 같이 쓰게 되면 "" 에서 끝나지 않고, " 라는 String 값이 들어가게 됩니다.

이 때, 이런 문자 뿐만 아니라 문자열 내에서 특수한 형태, Enter 키나 Tab 키를 쓸 때에도 Escape Sequence 가 사용 됩니다.


Escape Sequence 는 Escape 구문이라고도 읽힙니다.


대표적으로 많이 쓰인 문자는 이러한 것이 있습니다.

  • \t : 수평 탭 
  • \v : 수직 탭 
  • \n : 엔터( 한 줄 개행 )
  • \a : 알람( 삑 소리 )
  • \b : 백 스페이스( 한 칸 삭제 )


이 때, ''' This is first line 이후 \ 를 쓰지 않고 엔터를 바로 쳐서 쓰게 되면





붙어서 출력 되는 것이 아닌, \n 이 붙어서 출력 되게 됩니다.




이번에는 다양한 변수와 String 에 대해 살펴 보았습니다. 


또한 함수와 변수, 입력 인자, return 값에 대해 다루어 보았습니다. 변수, 함수, 입력, return 등은 매우 중요하며, 기본적으로 사용되는 프로그래밍 용어이므로 잘 이해하고 넘어가야 합니다.


질문은 댓글로 소통 해 주세요!