Python의 전역변수와 지역변수의 차이점(자세한 코드 설명)

藏色散人
풀어 주다: 2019-03-16 16:37:33
원래의
5929명이 탐색했습니다.

Python의 전역변수와 지역변수의 차이점(자세한 코드 설명)

전역 변수는 함수 외부에서 정의되고 선언된 변수이므로 함수 내부에서 사용해야 합니다.

#这个函数使用全局变量s
def f():  
    print s  
  
# 全局作用域
s = "I love Python"
f()
로그인 후 복사

출력:

I love Python
로그인 후 복사

동일한 이름의 변수가 함수 범위 내에 정의된 경우 전역 값 대신 함수 내에 지정된 값만 인쇄됩니다.

# 这个函数有一个与s同名的变量。
def f():  
    s = "Me too."
    print s  
  
# 全局作用域
s = "I love Python" 
f() 
print s
로그인 후 복사

출력:

Me too
I love Python
로그인 후 복사

함수 f()를 호출하기 전에 변수 s는 "I love Python"이라는 문자열로 정의됩니다. f()의 유일한 명령문은 "print s" 명령문입니다. local s가 없으므로 global s의 값이 사용됩니다.

문제는 f() 함수 내에서 s의 값을 변경하면 어떻게 될까요? 전반적인 상황에 영향을 미칠까요?

다음 코드에서 테스트합니다.

def f():  
    print s 
  
    # 如果我们在下面评论,这个程序不会显示错误。
    s = "Me too."
  
    print s 
  
#全局作用域
s = "I love Python" 
f() 
print s
로그인 후 복사

출력:

Line 2: undefined: Error: local variable 's' referenced before assignment
로그인 후 복사

위 프로그램이 작동하려면 "global" 키워드를 사용해야 합니다. 이를 할당/변경하려면 함수에서 전역 키워드를 사용하면 됩니다. 인쇄 및 액세스에는 전역 변수가 필요하지 않습니다.

Python은 f() 내부 할당으로 인해 지역 변수가 필요하다고 "가정"하므로 첫 번째 print 문에서 이 오류 메시지가 표시됩니다. 함수 내에서 변경되거나 생성된 모든 변수는 전역 변수로 선언되지 않은 경우 로컬 변수입니다. 전역 변수를 사용하고 싶다고 Python에 알리려면 "global" 키워드를 사용해야 합니다.

다음 예에서 볼 수 있듯이:

# 这个函数修改全局变量's' 
def f(): 
    global s 
    print s 
    s = "Look for Python"
    print s  
  
#全局作用域
s = "Python is great!" 
f() 
print s
로그인 후 복사

출력:

Python is great!
Look for Python.
Look for Python.
로그인 후 복사

좋은 예:

a = 1
  
# 使用global,因为没有本地'a' 
def f(): 
    print 'Inside f() : ', a 
  
#变量“a”被重新定义为局部变量
def g():     
    a = 2
    print 'Inside g() : ',a 
  
#使用全局关键字修改全局'a'
def h():     
    global a 
    a = 3
    print 'Inside h() : ',a 
  
# 全局作用域
print 'global : ',a 
f() 
print 'global : ',a 
g() 
print 'global : ',a 
h() 
print 'global : ',a
로그인 후 복사

출력:

global :  1
Inside f() :  1
global :  1
Inside g() :  2
global :  1
Inside h() :  3
global :  3
로그인 후 복사

관련 추천 : "Python Tutorial"

위 내용은 Python의 전역변수와 지역변수의 차이점(자세한 코드 설명)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿