> 백엔드 개발 > 파이썬 튜토리얼 > Python의 함수 범위

Python의 함수 범위

不言
풀어 주다: 2018-05-07 13:56:36
원래의
1215명이 탐색했습니다.

이 글에서는 Python에서 특정 참조 값이 있는 함수 범위를 주로 소개합니다. 이제 도움이 필요한 친구들이 참조할 수 있도록 공유하겠습니다.

Python에서는 함수가 범위입니다. 이번 글은 파이썬의 함수 범위 소개에 초점을 맞췄습니다. 관심 있는 친구들은 함께 살펴보세요. 파이썬에서 함수는 범위입니다. Xiao Yafei

외부 이름: xiaoyafei

중첩 함수에서 검색하는 방법을 다시 살펴볼까요?
name = 'xiaoyafei'
def change_name():
  name = '肖亚飞'
  print('在change_name里的name:',name)
change_name() # 调用函数
print("在外面的name:",name)
로그인 후 복사

위의 중첩 함수에서는 함수가 범위라는 것을 잘 설명할 수 있으니 이제 코드를 조금 바꿔서 어떻게 되는지 살펴볼까요?

age = 15
def func():
  print('第一层age:',age) # 第一层age: 15
  def func2():
    age = 73
    print("func2中的age:",age) # func2中的age: 73
    def func3():
      age = 84
      print("func3中的age:",age) # func3中的age: 84
    func3() # 调用func3函数
  func2() # 调用func2函数
func()
로그인 후 복사

글쎄, 이때 누군가가 말도 안 되는 일이 많이 변했다고 하더군요. 는 지역 변수와 전역 변수가 되기 때문에 묻고 싶습니다. 위의 중첩 함수에는 func2에 age 변수가 없는데 전역 변수 age = 15를 어떻게 찾나요?

이때 우리는 살펴봐야 합니다. 범위 검색 순서:

변수 범위 LEGB

L: locals 지역 변수 및 실제 매개변수를 포함한 함수 내의 네임스페이스

E: enclosing 외부 중첩 함수의 네임스페이스 , 즉 인접한 상위 레이어입니다. 예를 들어 func2에 age 변수가 없으면 func
  • G:globals 전역 변수
  • B:builtins 네임스페이스에서 이를 찾습니다. 모듈
  • 먼저 네임스페이스가 무엇인지 알아보겠습니다.
  • 네임스페이스는 이름에서 알 수 있듯 이름이 저장되는 곳입니다. 예를 들어 x = 1 이라고 할까요? , 1이 메모리에 저장되어 있는데 변수 이름 x는 어디에 저장되어 있나요? 네임스페이스는 이름 x와 1의 바인딩 관계가 저장되는 곳입니다. locals: 지역 변수 및 형식 매개변수를 포함한 함수 내의 네임스페이스입니다.

globals: 전역 변수, 함수가 정의된 모듈의 네임스페이스

내장: 내장 모듈의 네임스페이스

  • 다양한 변수의 범위는 변수가 위치한 네임스페이스에 따라 결정됩니다.

    범위는 범위입니다
  • 전역 범위: 전역적으로 유효함, 전역적으로 유효함
  • 로컬 범위: 임시 인벤토리, 로컬로 유효함

예를 들어보겠습니다

age = 15
def func():
  print('第一层age:',age) # 第一层age: 15
  def func2():
    print("func2中的age:",age) # func2中的age: 15 # 看到没有,如果当前作用域里没有age变量,那么它就会往上找
    def func3():
      age = 84
      print("func3中的age:",age) # func3中的age: 84
    func3() # 调用func3函数
  func2() # 调用func2函数
func()
로그인 후 복사
L --> E --> G -->B 규칙에 따라 검색합니다. 즉, 로컬에서 찾을 수 없으면 외부에서 로컬로 찾습니다. 로컬 영역(예: 클로저) 다시 찾을 수 없으면 전역적으로 찾은 다음 내장 함수에서 찾습니다.
  • 관련 권장 사항:

  • Python의 함수 소개

위 내용은 Python의 함수 범위의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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