반응형
이 코드가 작동하는 이유 :
var = 0
def func(num):
print num
var = 1
if num != 0:
func(num-1)
func(10)
그러나 이것은 "할당 전에 참조 된 지역 변수 'var'"오류를 제공합니다.
var = 0
def func(num):
print num
var = var
if num != 0:
func(num-1)
func(10)
해결 방법
첫 번째 코드에서는 지역 변수 var 를 만들고 해당 값을 사용했지만 두 번째 코드에서는 정의하지 않고 지역 변수 var 를 사용하고 있기 때문입니다.
따라서 두 번째 함수가 작동하도록하려면 다음을 선언해야합니다.-
global var
var 를 사용하기 전에 함수에서.
def func(num):
print num
var = 1 <-- # You create a local variable
if num != 0:
func(num-1)
이 코드에서 :
def func(num):
print num
var = var <--- # You are using the local variable on RHS without defining it
if num != 0:
func(num-1)
업데이트 :-
그러나 @Tim의 의견에 따라 함수 내에 global 변수를 사용해서는 안됩니다. 변수를 사용하기 전에 정의하여 로컬 범위 에서 사용하십시오. 일반적으로 변수의 범위를 local 로 제한 해야하며, 심지어 local 네임 스페이스 limit 에서도 지역 변수의 범위를 사용하면 코드를 더 쉽게 이해할 수 있습니다.
변수의 범위를 더 많이 늘릴수록 사용할 필요가없는 외부 소스에서 사용할 가능성이 높아집니다.
참조 페이지 https://stackoverflow.com/questions/13091357
반응형
'파이썬' 카테고리의 다른 글
| 파이썬 How does condensed distance matrix work? (pdist) (0) | 2021.02.02 |
|---|---|
| 파이썬 Flask보기에서 JSON 응답 반환 (0) | 2021.02.02 |
| 파이썬 문자열의 유니 코드 문자를 다른 파이썬으로 바꾸는 방법은 무엇입니까? (0) | 2021.02.02 |
| 파이썬 소수를 나열하는 Python 라이브러리가 있습니까? (0) | 2021.02.02 |
| 파이썬 Compare strings based on alphabetical ordering (0) | 2021.02.02 |
댓글