문제 설명
풀이 코드
|
|
CHECK!
전역 변수 관련 헷갈리는 부분이 있어서 chat gpt한테 물어봐서 해결했다. 좀 더 나은 방식으로 코드를 고쳐봐야겠다.
chat gpt 답변
이 코드에서 함수들이 전역 변수 _set를 직접 조작하는 것은 파이썬에서 허용되는 행위입니다. 전역 변수는 함수 내부에서 읽기 및 수정이 가능합니다. 그러나 전역 변수에 새로운 객체를 할당하려면 주의가 필요합니다. 이 코드에서 _set = set()와 같은 대입은 실제로 전역 변수 _set을 수정하는 것이 아니라, 지역 변수 _set을 새롭게 생성합니다.
파이썬에서 함수 내부에서 전역 변수에 새로운 값을 할당하려면, global 키워드를 사용해야 합니다. 이것은 해당 함수 내에서 해당 변수가 전역 변수임을 파이썬 인터프리터에게 알리는 것입니다.
예를 들어, _all 함수에서 전역 변수 _set에 새로운 집합을 할당하려면 다음과 같이 작성해야 합니다:
1 2 3 4
Copy code def _all(): global _set _set = set([i for i in range(1, 21)])
이렇게 하면 _set은 전역 변수로 취급되며, 함수 내에서 새로운 값으로 재할당됩니다. global 키워드 없이 _set = set()를 사용하면, 해당 함수의 지역 범위에서 새로운 _set 변수가 생성되고, 전역 변수 _set는 변경되지 않습니다.