[PYTHON] 파이썬 범위 [duplicate]
PYTHON파이썬 범위 [duplicate]
나는 이것을 알아 내려고 노력하고있다 :
c = 1
def f(n):
print c + n
def g(n):
c = c + n
f(1) => 2
g(1) => UnboundLocalError: local variable 'c' referenced before assignment
감사!
해결법
-
==============================
1.함수 내에서 할당 된 변수는 기본적으로 로컬 변수로 취급됩니다. 전역 변수에 할당하려면 전역 명령문을 사용하십시오.
함수 내에서 할당 된 변수는 기본적으로 로컬 변수로 취급됩니다. 전역 변수에 할당하려면 전역 명령문을 사용하십시오.
def g(n): global c c = c + n
이것은 실제로 절 잘 앉지 않는 파이썬의 기발한 영역 중 하나입니다.
-
==============================
2.전지구 적 국가는 피할 수밖에 없으며 특히 돌연변이를 필요로합니다. g ()가 단순히 두 개의 매개 변수를 가져야하는지 또는 f () 및 g ()가 인스턴스 속성이있는 공통 클래스의 메소드 일 필요가 있는지 고려하십시오
전지구 적 국가는 피할 수밖에 없으며 특히 돌연변이를 필요로합니다. g ()가 단순히 두 개의 매개 변수를 가져야하는지 또는 f () 및 g ()가 인스턴스 속성이있는 공통 클래스의 메소드 일 필요가 있는지 고려하십시오
class A: c = 1 def f(self, n): print self.c + n def g(self, n): self.c += n a = A() a.f(1) a.g(1) a.f(1)
출력 :
2 3
-
==============================
3.그렉의 게시물에 대한 정오표 :
그렉의 게시물에 대한 정오표 :
그들이 언급되기 전에 반드시 있어야합니다. 보세요: x = 1 def explode () : x #를 인쇄하면 UnboundLocalError가 발생합니다. x = 2
그것은 참조 된 후에 x가 할당 되더라도 폭발합니다. 파이썬에서 변수는 로컬이거나 외부 범위를 참조 할 수 있으며 한 함수에서 변경할 수 없습니다.
-
==============================
4.Greg가 말했던 것 이외에, Python 3.0에서 "여기에 둘러싸인 범위에 정의 된 일부 이름이 있습니다."라는 비 지역 선언이있을 것입니다. 전역과 달리이 이름은 현재 범위 외부에서 이미 정의되어야합니다. 이름과 변수를 쉽게 추적 할 수 있습니다. 요즘에는 "전역 적 무언가"가 정확히 정의되어 있는지 알 수 없습니다.
Greg가 말했던 것 이외에, Python 3.0에서 "여기에 둘러싸인 범위에 정의 된 일부 이름이 있습니다."라는 비 지역 선언이있을 것입니다. 전역과 달리이 이름은 현재 범위 외부에서 이미 정의되어야합니다. 이름과 변수를 쉽게 추적 할 수 있습니다. 요즘에는 "전역 적 무언가"가 정확히 정의되어 있는지 알 수 없습니다.
from https://stackoverflow.com/questions/146359/python-scope by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 초심자 파이썬 : 동일한 파일 읽기 및 쓰기 (0) | 2018.10.08 |
---|---|
[PYTHON] 파이썬을 사용하여 문자열에서 URL을 추출하는 가장 깨끗한 방법은 무엇입니까? (0) | 2018.10.08 |
[PYTHON] 파이썬 하위 프로세스 와일드 카드 사용법 (0) | 2018.10.08 |
[PYTHON] 판다에서 datetime 형식을 변경하는 방법 (0) | 2018.10.08 |
[PYTHON] Pandas : 필요한 경우 NaN을 생성하여 숫자로 변환 (0) | 2018.10.08 |