변수와 식별자¶
변수¶
변수(Variables)는 할당 연산자 (Assignment Operator)
=
을 통해 할당(assignment) 됩니다.해당 데이터 타입을 확인하기 위해서는
type()
을 활용합니다.해당 값의 메모리 주소를 확인하기 위해서는
id()
를 활용합니다.

# 변수 x에 임의의 문자열을 할당해봅시다.
# type()을 사용해 결과를 확인해봅시다.
x = 'hello'
type(x)
str
# id()를 사용해 결과를 확인해봅시다.
id(x)
2281792062960
같은 값을 동시에 할당할 수 있습니다.
# 같은 값을 x와 y에 동시에 할당해봅시다.
# 그리고 print를 이용하여 x, y 값을 확인해봅시다.
x = y = 1004
print(x, y)
1004 1004
다른 값을 동시에 할당 가능합니다.
# 두 개의 변수 x, y 에 1, 2 값을 동시에 할당해봅시다.
# 그리고 print를 이용하여 x, y 값을 확인해봅시다.
x, y = 1, 2
print(x, y)
1 2
# 두 개의 변수 x, y에 값 1을 할당해봅시다.
# 두 개의 변수에 하나의 값을 넣었을때의 오류를 확인해봅시다.
x, y = 1
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_28272/3748828729.py in <module>
2 # 두 개의 변수에 하나의 값을 넣었을때의 오류를 확인해봅시다.
3
----> 4 x, y = 1
TypeError: cannot unpack non-iterable int object
# 두 개의 변수 x, y에 값 1, 2, 3 을 동시에 할당해 봅시다.
# 두 개의 변수에 세 개의 값을 넣었을때의 오류를 확인해 봅시다.
x, y = 1, 2, 3
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_28272/1169980124.py in <module>
2 # 두 개의 변수에 세 개의 값을 넣었을때의 오류를 확인해 봅시다.
3
----> 4 x, y = 1, 2, 3
ValueError: too many values to unpack (expected 2)
이를 활용하면 서로 값을 바꾸고 싶은 경우 아래와 같이 활용 가능합니다.
# 변수 x와 y의 값을 바꿔봅시다.
# 그리고 결과를 print를 이용해 확인해봅시다.
x = 1
y = 2
print(x, y)
1 2
# 방법 1 : 임시 변수 활용
tmp = x
x = y
y = tmp
print(x, y)
2 1
# 방법 2 : Pythonic!
x = 1
y = 2
x, y = y, x
print(x, y)
2 1
# tmp와 x, y = y, x 안쓰고 x & y 바꾸기?
x = 1
y = 2
print(x, y)
x = x + y
y = x - y
x = x - y
print(x, y)
1 2
2 1
식별자¶
파이썬에서 식별자(Identifiers)는 변수, 함수, 모듈, 클래스 등을 식별하는데 사용되는 이름(name)입니다.
식별자의 이름은 영문알파벳(대문자와 소문자), 언더스코어(_), 숫자로 구성됩니다.
첫 글자에 숫자가 올 수 없습니다.
길이에 제한이 없습니다.
대소문자(case)를 구별합니다.
아래의 키워드는 사용할 수 없습니다.
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
# 키워드들을 직접 확인해봅시다.
# import 구문은 모듈파트에서 다시 알아봅시다.
import keyword
print(keyword.kwlist)
['False', 'None', 'True', '__peg_parser__', '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']
내장함수나 모듈 등의 이름으로도 만들면 안됩니다.
기존의 이름에 다른 값을 할당하게 되므로 더 이상 동작하지 않음
# 내장함수의 이름을 사용하면 어떤일이 일어나는지 확인해봅시다.
# print는 값을 출력해주는 내장함수(Built-in function)입니다.
print(5)
5
# 함수 이름 == 변수 이름
# 예시로 변수명을 print라하고 문자열 'hi'를 할당해봅시다.
# 그리고 print() 를 사용하고 오류를 확인해봅시다.
# print은 이제 'hi'라는 값으로 할당되었기 때문에 이전의 화면 출력 기능을 수행하지 못합니다.
print = 'hi'
print(5)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_28272/1566697404.py in <module>
5
6 print = 'hi'
----> 7 print(5)
TypeError: 'str' object is not callable
# 뒤에서 진행될 코드에 영향이 갈 수 있기 때문에 방금 생성한 print 변수를 삭제합니다.
# 이렇게 하면 변수 print 는 삭제되고 화면출력의 print는 사용가능 합니다.
# 자세한 내용은 namespace 파트에서 확인해봅시다.
del print