반응형
1. 파이썬의 변수의 특성?
C언어에서 변수를 선언하면 그 위치에 따라 지역변수인지 전역변수인지 나뉜다.
C언어를 먼저 익힌 필자로선 다른 언어도 마찬가지인 줄 알았다. 하지만 파이썬은 달랐다. 파이썬의 모든 변수는 지역변수였다.
예시를 보자.
a = ["tom", "jerry", "mike"]
jjak = []
n = 0
def findjjak(lst):
for i in range(0,len(lst)-1):
for j in range(i+1, len(lst)):
n = n + 1
jjak.append(a[i] + '-' + a[j])
return jjak
print(findjjak(a))
print(n)
이걸 그대로 실행하면 이런 에러가 뜬다.
UnboundLocalError: local variable 'n' referenced before assignment
UnboundLocalError는 보통 선언된 변수의 scope에 문제가 있을 때 발생하는 에러다.
2. 해결방법
어떻게 해결해야하나?
크게 두가지 방법이 있다.
1. 전역변수로 사용하도록 선언
a = ["tom", "jerry", "mike"]
jjak = []
n = 0
def findjjak(lst):
global n
for i in range(0,len(lst)-1):
for j in range(i+1, len(lst)):
n = n + 1
jjak.append(a[i] + '-' + a[j])
return jjak
print(findjjak(a))
print(n)
정의되는 함수 밖에 변수를 선언한다. 그 후 사용하고자 하는 함수 안에서 'global n'으로 전역변수로 사용할 것이라고 선언하면 된다.
2. 변수 선언의 위치와 호출 방법을 바꾼다.
a = ["tom", "jerry", "mike"]
def findjjak(lst):
jjak = []
n = 0
for i in range(0,len(lst)-1):
for j in range(i+1, len(lst)):
n = n + 1
jjak.append(a[i] + '-' + a[j])
print(n)
return jjak
print(findjjak(a))
참고 문헌
반응형
'Programming Tools > Python_파이썬' 카테고리의 다른 글
[Python] 문자열 자료형 (0) | 2021.06.17 |
---|---|
[Python] - 객체, 클래스, 추상화, 인스턴스화(Object, Class, Abstraction, Instantiation) (0) | 2021.05.19 |
[Python] - 반복문, 함수의 정의, 동적타이핑 (Loop, Defining Function, Dynamic Typing) (0) | 2021.05.18 |
Python - 조건문, 자주 사용하는 함수 (0) | 2021.05.17 |
Python - 연산자 (0) | 2021.05.17 |