https://book.naver.com/bookdb/book_detail.nhn?bid=16268369
으뜸 파이썬과 함께 공부하는 포스트입니다.
파이썬은 대화식 실행모드를 제공하는데, 이 모드는 파이썬 명령어를 입력할 수 있는 대화식 창에서 즉각적인 피드백을 받을 수 있는 모든 모드이다.
이와 다른 모드는 py라는 확장자를 가지는 스크립트를 만들어서 파이썬 인터프리터를 통해 실행시키는 스크립트 실행 모드이다.
간단한 코드를 테스트 할 때에는 주로 대화식 실행 모드를 사용하고, 다소 복잡한 코드는 스크립트 파일을 만들어서 실행 하는 것이 좋다.
앞장에서 Hello Python! 이라는 문자열을 출력해 보았다. 문자열을 출력할 적에 'Hello Python!' 과 같이 작은따옴표를 사용하거나 "Hello Python!" 같이 큰따옴표를 사용했을때 같은 결과가 나온다.
하지만 따옴표를 사용하지 않으면 오류가 발생한다. print() 함수 안에 들어 있는 Hello Python!이 무엇인지 파이썬이 이해할 수 없기 때문이다. 즉, 프로그래밍 언어는 주어진 문법에 맞게 입력된 명령문만 제대로 해석하여 실행할 수 있다.

나아가 다음과 같은 출력을 시도해 보자.

'My age is' 라는 문자열과 20이라는 숫자를 쉼표로 구분하여 출력하는 것이다. 결과는 'My age is 20'이 출력된다.
또, print('오늘의 걸음 수', 8000, '걸음') 과 같이 문자열, 쉼표, 숫자, 쉼표, 문자열 순서로 출력문을 만들어 보자.
결과는 아래와 같이 '오늘의 걸음 수 8000 걸음' 이 출력된다. 즉, 문자열과 쉼표로 구분된 숫자나 문자열은 print() 함수에서 같은 줄에 함께 출력된다 라는 것을 알 수 있다.
그리고, 파이썬은 출력문에서 * 연산자를 이용하여 출력 횟수를 제어하는 것이 가능하다.
다음과 같은 코드를 대화창 실행 모드에서 입력해보자.

첫번째 코드를 입력하면 'Hello '가 두번 반복되어 출력되며, 두번째 코드를 입력하면 'Hello '가 네번 출력된다.
이렇게 곱셈 연산자를 사용하면 복잡한 코드에서 중복되는 코드의 사용을 줄일 수 있다.
아래는 대화식 실행모드와 스크립트 실행모드에서 이름을 출력한 것을 비교한 것이다.

이와같이 스크립트 실행 모드에서는 해야할 일들을 나열한 스크립트를 하나의 파일에 작성하고 일괄적으로 실행할 수 있다. 아래의 코드를 입력해보자.

실행 결과

이와 같이 한꺼번에 입력하고 한꺼번에 출력하기 때문에 편하다.
1장에서도 변수를 사용하였지만 상세하게 다루지 않았다. 필요성과 사용방법을 알아보자.
변수는 중, 고등학교때 지겹게 배운 수학에서 나왔듯이 도형의 면적, 둘레 등을 구할때 사용되고 다른 곳에도 많이 쓰인다. 이 변수에 값을 저장하여 연산할 때에 값이 아닌 변수를 사용 할 것이다.
프로그래밍에서도 상황에 따라 값이 변하는 것들이 있다. 여러곳에 사용되고, 상황이 바뀔 때마다 사용된 곳을 모두 찾아 그 값을 바꾸는 일은 매우 귀찮은 일이다. 몇 개라도 빠뜨리고 수정하면 의도한 바와 다른 결과를 얻게 된다. 이러한 문제를 해결하기 위해서 변수를 사용하는 것이다.
우선 원의 면적과 둘레를 변수 없이 구해보자.

그림에서 보다시피 둘레는 2πr , 면적은 πr^2으로 구할 수 있다.

실행 결과

이렇게 결과가 잘 나왔다. 하지만 반지름이 5인 원의 둘레와 면적을 구하려면 반지름 값을 일일이 다 바꾸어야 하는 불편함이 있다. 이번에는 변수를 사용해 보자.

실행 결과

앞의 결과와 똑같이 잘 나온다. 반지름이 5인 원같은 다른 값을 구하려면 radius = 4.0을 radius = 5.0으로 바꾸어 주기만 하면 값이 나온다.

실행 결과

radius 값만 바꾸어 줌으로 면적, 둘레 값을 쉽게 구할 수 있다.
31.4가 아니라 31.400000000002가 나오는 것은 3.14가 정확히 나누어 떨어지는 값이 아니기 때문이다. 딱히 신경 쓸 필요는 없다.
이제 변수의 개념을 이해해보자. 변수란 컴퓨터가 메모리에 값을 저장해 놓은 위치의 이름이다. 대부분의 프로그래밍 언어는 컴퓨터 메모리의 특정 위치에 이름을 부여할 수 있다. 그리고 이 이름을 이용하여 그 위치의 데이터를 읽고, 쓰거나 수정할 수 있다. 그리고 그 값은 바뀔 수 있으므로 '변할 수 있는 수' 변수라고 한다. 이때 '수'는 단순한 수치가 아니라 데이터로 이해하는 것이 더 정확하다.
만약 하나의 변수 이름을 여러 개의 메모리 위치를 가리키는 데에 사용하면 이 변수가 무엇을 가리키는지 알 수 없다. 따라서 다른 메모리 위치에서는 서로 다른 이름을 부여해야 한다. 이처럼 프로그래밍 언어를 사용할 때는 사용자가 정의하는 변수나 함수에 대해 서로 구별되는 이름을 부여해야 하는데, 이것을 식별자 라고 한다.
컴퓨터의 데이터는 컴퓨터 내부의 핵심 부품인 메인 메모리에 저장되어 읽기, 쓰기, 덮어쓰기를 한다. 흔히 우리는 메모리라고 부른다. 이 공간은 바둑판 같은 모양으로 표현할 수 있다. 이곳에 저장된 데이터를 읽고 쓰려면 저장 한 곳의 위치를 알아야 하는데, 이 위치를 메모리 주소라고 한다.

메모리 공간은 주소로 표현되는데, 이 주소는 보통 16진수 표현이라 컴퓨터가 0x12FF06 (0x = 16진수 표현)이라는 주소를 이해하는 것이 힘든 일이 아니지만, 인간의 입장에서는 무슨 뜻인지도 이해하기 힘들고, 다른 주소와 구별도 어렵다.

이와 같이 메모리 공간 0x12FF06의 위치에 사람이 인지하기 쉬운 radius 라는 이름을 붙이고, 반지름을 의미하는 이름을 붙여주면 이 공간에 무엇을 저장해야 하는지, 읽은값이 무엇을 의미하는지 다루기 훨씬 편하다. 메모리 공간에 저장된 값을 변경하기 위해서는 radius = 5.0 과 같은 할당 연산자 =을 이용한다.

이처럼 변수는 메모리의 특정한 위치에 저장된 값을 다루기 위해 사용하는 이름이며, 서로 다른 데이터는 서로 다른 이름을 부여하여 다룰 수 있게 한다.

위와 같은 코드는 '홍길동' 이라는 문자열이 있으면 이 문자열을 가리키는 name 이라는 변수를 만든다.
이때 '홍길동' 과 같은 데이터 값을 프로그래밍 언어에서는 리터럴이라고 한다. 이렇게 할당된 변수는 print()함수를 통해서 다음과 같이 출력할 수 있으며, 여러 가지 연산자를 사용하여 연산을 적용할 수도 있다.

실행 결과

파이썬에서 식별자의 이름을 짓는데 반드시 지켜야 하는 규칙은 다음과 같다.
파이썬에서 사용 가능한 식별자들

파이썬에서 사용 불가능한 식별자들

그러면 index와 Index는 같은 식별자일까? 답은 아니오 이다. 파이썬은 C언어와 마찬가지로 대소문자를 구분하므로 index와 Index, INDEX는 다른 식별자이다. 앞장에서 print()대신 PRINT(), Print()를 쓰면 에러가 발생하는 것을 보았다. print는 괄호 내의 문자열, 수식 값을 출력하는 역할을 하지만 나머지는 하지 않기 때문이다.
파이썬에는 용도가 미리 정해져있는 30여 개의 특정한 단어가 있으며 이 단어는 식별자로 사용할 수 없다. import, for, if, def, class 등과 같은 단어들이다. 이처럼 지정된 역할을 수행하도록 예약된 단어를 키워드 혹은 예약어라고 한다.
sum, max, min, len, list 등은 변수 이름으로 사용할수 있지만, 같은 이름의 함수와 이름이 중복되므로 사용하지 않도록 한다. sum이라는 변수를 사용한 후 sum()내장 함수를 호출하면 호출이 안되고 다음과 같은 오류가 발생한다.
