먼저 이 코드는 전역 변수 fields라는 빈 리스트를 정의했습니다. 이 리스트는 함수를 선언할 당시에는 정의되지 않아 빈 값으로 있다가 func1()이라는 함수를 거쳐 문자 1과 2가 들어 있는 리스트로 바뀝니다. 이제 fields를 출력해 보겠습니다.
> print(fields)
[]
fields에 값을 넣는 함수를 호출했지만 이상하게도 출력 결과는 빈 값입니다.
값이 제대로 저장되지 않은 문제 원인은 func1() 함수 내에 있는 fields가 전역 변수 fields가 아니라 지역 변수 fields로 인식되기 때문입니다.
그럼 함수 내에서 사용할 fields는 지역 변수가 아니고 전역 변수이므로, 전역 변수를 사용하라는 의미를 부여하고자 앞 코드를 다음과 같이 고쳐 보겠습니다.
fields = []
def func1():
global fields
fields = ["1", "2"]
func1()
func1() 함수 내에서 global fields라고 선언하면 함수 내에서 사용하는 fields는 모두 전역 변수임을 의미합니다. 따라서 함수 내에서 접근하는 fields는 전역 변수 fields이기에 이후 출력한 결과는 다음과 같습니다.
> print(fields)
['1', '2']