╱╱╭╮╱╱╱╱╱╱╭━━━╮╱╱╱╭╮╱╭╮╱╱╱╱╱╱ ╱╱┃┃╱╱╱╱╱╱┃╭━╮┃╱╱╱┃┃╱┃┃╱╱╱╱╱╱ ╱╱┃┣━━┳━━╮┃┃╱┃┣━╮╱┃╰━╯┣━━┳━╮╱ ╭╮┃┃╭╮┃┃━┫┃╰━╯┃╭╮╮┃╭━╮┃╭╮┃╭╮╮ ┃╰╯┃╭╮┃┃━┫┃╭━╮┃┃┃┃┃┃╱┃┃╭╮┃┃┃┃ ╰━━┻╯╰┻━━╯╰╯╱╰┻╯╰╯╰╯╱╰┻╯╰┻╯╰╯

Python/Python 기초

[Python] 변수의 선언과 자료형 2 (변수 선언 규칙)

재안안 2022. 2. 22. 13:13

 

사실 변수의 선언과 초기화는 다르다.

말그대로 변수의 선언은 변수를 쓸 것이다. 어떠한 박스에 이름을 붙이는 행위이고

변수의 초기화는 박스에 값을 넣는 행위이다.

 

 

파이썬에서는 변수의 시작은 초기화부터이다.                                                                                               

1번째 줄은 변수 x를 선언함과 동시에 초기값 10으로 초기화한 것이고

 

2번째 줄은 변수 y를 선언만 해보려고 했는데 아래와 같이 에러가 났다.

(y는 선언이 안됐다고 한다. 2번째 줄을 int y;로 해봐도 안된다. 이런식의 변수 초기화는 C언어에서 사용한다.)

 

콘솔창 에러

 

그 이유를 들자면 변수와 저장하는 값의 자료형이 같아야 한다고 했는데 원래는 변수의 자료형을 컴퓨터에게 알려줘야한다. 파이썬에서는 변수가 저장하는 값의 자료형으로 자동으로 바뀌며 이를 초기화 된다고 한다. 그런데 저장하는 값이 없으니 초기화 작업을 하다가 중단해 미완성 줄인줄 알고 에러처리 해버린다. 그래서 변수를 사용하려면 선언과 동시에 초기화를 해야한다.

 

여담이지만 궁금증이 생겨서 파이썬에서는 변수를 선언만 할 수는 없나? 라는 생각으로 몇가지 실험을 해봤는데

아래의 사진을 보면 변수 y로 값을 넣지않고 선언만 하는데에 성공했다. 에러가 안떴다. 그래서 선언 후에 값을 넣어봤는데 값이 들어있지 않던 변수y에 값이 들어가는게 아니라 그냥 변수 y가 새로 초기화되었다. 이는 x에서도 마찬가지였다.

 

아래의 사진을 보면 이해를 도울 것이다.

 

실험 코드와 결과

 

실행결과의 <class 'NoneType'>을 통해 y가에러 없이 선언이 되었구나를 알 수 있다.

그 아래 숫자들은 print(id(x))print(id(y))의 결과들이다.

x의 주소와 y의 주소를 물어보고 출력하는 용도다.

 

x와 y의 주소 출력 후 11과 12라는 값을 넣어 보았다. 그런데 마지막 두줄에서 보면 x와 y의 주소가 이전과 다르다.

x와 y의 값을 바꾸거나 넣은게 아니라 기존의 변수를 없애고 새로운 변수를 만든 것이다. 초기화 해버렸다. 

결과적으로 파이썬에서 변수는 초기화만 된다는걸 알면 되겠다.

 

 

다시 본론으로 돌아가자면 변수이름을 지을때 따라야하는 규칙들이 있다.

 

1. 변수는 가독성을 위해 페이지 상단에 초기화 해준다.

2. 변수 이름은 되도록 용도를 알아보기 쉽게 만든다.

3. 변수 이름은 되도록 영어로 만든다.

4. 영어 대소문자 구분한다.

5. 변수 이름은 특수문자 및 공백을 포함할 수 없다. (언더바_ 제외)

6. 변수 이름은 파이썬 키워드와 같을 수 없다.

7. 변수 이름은 숫자로 시작할 수 없다.

 

첫번째를 제외하면 모두 변수 이름과 관련된 규칙들이다. 4~7번은 안지키면 에러가 뜬다.

예를 들어보자면 아래와 같이 8개의 변수를 만들어 보았다.

 

 

이와같이 변수 선언시 규칙을 지키지 않으면 문법 오류로 처리해 버린다. 변수 사용시 주의해야한다.

4번째 줄에 Example은 2번째 줄의 example과 다른 변수이다.

7번째 줄에 break에 색처리됐는데 이는 키워드라는 뜻이다. 이미 다른 용도가 있어 변수명으로 사용할 수 없다.

 

그리고 여기서 한가지 더 알아가야하는게 프로그램 오류(Syntax Error)가 뜨면 그 아래 줄부터는 실행이 안되고 오류가 뜬 코드에서 멈춰있는다는 것이다.

아래는 아까의 왼쪽은 같은 코드에서 print(byeonsu)를 추가한 것이고 오른쪽은 결과이다.

byeonsu는 정상적으로 초기화 되었음에도 print(byeonsu)은 실행되지 않는다. 그래서 위에서는 오류난 줄을 주석처리 해가며 오류의 유무를 하나하나 확인했다.

 

아래 사진처럼 Syntax Error가 뜨면 아래의 오류들은 나오지도 않는다.