본문 바로가기
파이썬

파이썬 Python 전역 / 지역 변수

by º기록 2021. 2. 2.
반응형

이 코드가 작동하는 이유 :

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

 

 

반응형

댓글