[파이썬 심화] 1. 변수에 관한 고찰◎ Python/파이썬 심화 (책)2022. 8. 21. 17:54
Table of Contents
반응형
문법에 사용하는 예약어(keyword)의 종류
예약어 관리 모듈은 keyword다. 이 모듈을 import하고 모듈 내 변수 kwlist를 조회하면 예약어의 종류를 알 수 있다.
print(keyword.kwlist)
[결과]
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
예약어는 변수로 사용할 수 없다는 특징이 있다. 예약어를 변수로 정의하고 실행하면 SyntaxError가 나온다.
변수 이름으로 선언할 수 있는 문자열
파이썬에서는 예약어를 제외한 문자열로 변수의 이름을 정의할 수 있다. 문자열로 작성할 수 있는 문자는 무엇이 있을까?
파이썬은 유니코드 문자에 있는 다양한 언어로 변수를 정의한다. 해당 문자 정보를 알아보기 위해 string 모듈을 알아보자.
import string
print(dir(string))
[결과]
['Formatter', 'Template', '_ChainMap', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_sentinel_dict', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace']
모듈의 주요 변수를 확인하면 알파벳, 숫자, 기호, 공백문자 등이 들어있는 것을 확인할 수 있다.
변수 이름을 정의하는 규칙
파이썬에서나 다른 언어에서나 변수 이름을 정의하는 관용적인 방식이 존재한다. 이는 모듈, 클래스, 함수, 객체, 변수, 속성 등에 따라 차이가 있다.
변수 권장 명명 규칙
파이썬에서는 변수 이름을 지을 때 숫자를 제외한 문자와 밑줄을 이름의 첫 글자로 쓴다. 그 다음부터는 숫자, 문자, 밑줄을 섞어서 사용해도 된다.
- 함수, 객체, 변수 이름의 첫 글자는 소문자를 사용한다.
- 클래스 이름의 첫 글자는 대문자를 사용한다.
- 이름을 두 단어 이상으로 쓸 때는 두 번째 단어의 첫 글자를 대문자로 쓴다.
- 클래스나 객체 내의 보호 속성을 정의할 때는 첫 글자를 밑줄(_)부터 시작한다. (보호 속성은 외부 클래스와 객체에서 속성에 직접 접근해서 사용하지 않도록 주의하라는 뜻)
- 예약어와 같은 이름의 변수 이름을 사용하려면 예약어 뒤에 밑줄을 붙인다.
- 클래스나 객체의 비공개 속성은 외부에서 직접 접근 할 수 없게 이름을 변경하는 구조인 맹글랭(Mangling) 처리 방식이다. 이때는 이름 앞에 __을 붙이면 자동으로 클래스 이름이 _붙여진다.
- 파이썬 내부에서만 사용되는 스페셜 속성이나 메소드는 이름 양쪽에 __를 붙여 사용한다.
기억해야 할 것들은 숫자를 변수 이름의 첫 번째 글자로는 쓰지 못하는 점, 함수/변수는 사이에 _ / 클래스는 영어로 붙여쓰는 점인 것 같다. 이 링크를 참고하는 것이 좋을 것 같다.
전역 이름공간, 내장 이름공간?
내장함수 globals, vars는 전역 이름공간을 조회해서 딕셔너리로 반환한다. 여기서 Temp 함수와 i 변수는 전역 이름공간에 속하고, 함수 내부에 있는 tmp 변수는 내장 이름공간이라 전역 이름공간에 속하지 않는다. 내장 이름공간은 locals() 함수로 알아볼 수 있다.
def Temp(val):
tmp = 99
i = 100
print(globals())
print(vars())
[결과]
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000021185E68700>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:\\Users\\reo91\\OneDrive\\Coding Practice\\P C++, Python\\Python.py', '__cached__': None, 'Temp': <function Temp at 0x00000211859C3E20>, 'i': 100}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000021185E68700>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:\\Users\\reo91\\OneDrive\\Coding Practice\\P C++, Python\\Python.py', '__cached__': None, 'Temp': <function Temp at 0x00000211859C3E20>, 'i': 100}
참고
- 한권으로 개발자가 원하던 파이썬 심화 A to Z, 문용준/문성혁 저
반응형
'◎ Python > 파이썬 심화 (책)' 카테고리의 다른 글
[파이썬 심화] 6. 문서화와 주석으로 꾸미기 (1) | 2022.08.28 |
---|---|
[파이썬 심화] 5. 문장 꾸미기 (0) | 2022.08.27 |
[파이썬 심화] 4. 객체를 생성한 클래스가 자료형이다 (0) | 2022.08.24 |
[파이썬 심화] 3. 프로그램은 표현식과 문장을 평가해 실행된다 (0) | 2022.08.23 |
[파이썬 심화] 2. 파이썬의 모든 값은 객체(object)다 (0) | 2022.08.22 |
@Reo :: 코드 아카이브
자기계발 블로그