- globals()
- 변수명에 일정한 숫자가 붙을 때 왠지 for문을 돌려 숫자를 붙여주고 싶다 그럴 때 사용할 수 있는 함수다
- 이 함수는 딕셔너리형이며, 변수를 생성함과 동시에 변수에 담을 값을 넣어줘야 한다
- 변수명은 key가 되고 변수에 들어간 값은 value가 된다
- globals()["변수명{}".format(변수명마다 부여할 값)] = 변수에 넣을 값
- 위와 같은 형식으로 사용할 수 있다
from pprint import pprint
for i in range(1,6):
globals()["number{}".format(i)] = i
pprint(globals())
- globals() 함수에 뭐가 들었는지 보기 위해 pprint를 사용했다 아래와 같이 나온다
{'__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>,
'__cached__': None,
'__doc__': None,
'__file__': 'c:\\Users\\l\\Desktop\\sparta\\algorithm\\prac.py',
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000002061FA19950>,
'__name__': '__main__',
'__package__': None,
'__spec__': None,
'i': 5,
'number1': 1,
'number2': 2,
'number3': 3,
'number4': 4,
'number5': 5,
'pprint': <function pprint at 0x000002061FB19EE0>}
- 저 변수와 값을 사용하고 싶은 경우 globals()["number1"] 이런 형태로 사용할 수 있다
sum_value = globals()["number1"] + globals()["number2"]
print(sum_value) # 3
- 이런 식으로 사용할 수 있다
- 변수명을 직접 쓰지 않고 for문을 돌리고 싶은 경우엔 아래와 같이 쓸 수 있다
sum_value = 0
for i in range(1,6):
sum_value += globals()["number"+str(i)]
print(sum_value) # 15
- str()붙이는 이유는 i는 int형이기 때문에 str과 int는 더할 수 없어서 TypeError가 뜬다
- str()을 붙여서 문자형으로 변환 후 더해서 number1, number2 이런 식으로 쓸 수 있다
- 변수명만 print하고 싶은 경우엔 아래와 같이 하면 된다
for i in globals():
if i[0] == "n":
print(i)
else:
pass
# 출력화면
# number1
# number2
# number3
# number4
# number5
- globals()를 하나씩 꺼내면 i에는 globals() 안에 있는 키값이 담기는데 그 키값의 0번째 인덱스라 n인 것을 찾으면 저렇게 지정한 변수명들만을 프린트 할 수 있다
- globals()의 다른 키값들은 따로 추가한 거 외에는 언더바로 시작해서 다른 값이 나올 일이 거의 없는 것 같다
- 아니면 위에서 한 것처럼 pprint(globals())해서 어떤 값들이 있는지 쭉 보는 것도 나쁘지 않은 방법이다