Python 내장 범위 정보

4410 단어 Python
Python에도'내재된'작용역이 있다는 것을 알았기 때문에 배운 것을 정리하고 싶습니다.

내장 오실로그래프는 무엇입니까?


필자처럼 Python 경험이 없고 다른 언어의 경험이 있는 상황에서 현지 범위와 전 세계 범위는 많은 사람들이 이해할 수 있지만 그 외에도'내장 범위'가 있다.
먼저 그림으로 작용역의 범위를 표시하면 다음과 같은 느낌이 든다.

이름으로 볼 때 전 세계가 가장 크다고 생각하지만, 나는 개인적으로 내장이 가장 크다고 생각한다.
이 내장 범위는 구체적으로 어떤 범위가 "여러 파일의 범위를 뛰어넘는"것인지입니다.
사실 나는 간단한 절차를 써서 확인하고 싶다.
다음은 main.py 에서 foo 모듈을 가져오면 show_이것은 score 함수를 인용하는 코드입니다.
foo.py
score = 100 # グローバル

def show_score():
  print('score: ', score)
main.py
import foo

foo.show_score()
실행 결과
python main.py
score:  100
main 모듈을 고쳐 보세요.
score는foo모듈의 전역 변수이기 때문에main모듈에서 인용할 때foo모듈을 거칩니다.
main.py
import foo

print(foo.score)
실행 결과
python main.py
100
이 밖에main 모듈을 다시 써 보십시오.
그리고 scoreは定義されていません 오류가 발생했습니다.
score는foo모듈의 변수입니다.main모듈의 변수가 아니기 때문에 잘못된 것 같습니다.
main.py
import foo

print(score) # fooモジュールのscore変数を参照したつもり
실행 결과
python main.py
Traceback (most recent call last):
  File "main.py", line 3, in <module>
    print(score)
NameError: name 'score' is not defined
전체적인 이 단어의 인상을 보면 print(score) 참조하고 싶은 곳이지만 틀릴 수 있다.

builtins 모듈


상술한 오류를 피하려면 score를 내장 역할 영역에 등록하십시오.
다른 모듈에서 직접 참조할 수 있도록 범위를 전역적으로 확장하는 이미지입니다.builtins 모듈을 사용하여 내장 범위를 등록할 수 있습니다.
main.py
import foo

print(score) # 「foo.」なしにscoreを参照できる
foo.py
import builtins

builtins.score = 100

def show_score():
  print('score: ', score)
실행 결과
python main.py
100
builtins 모듈을 가져오고 score를 내장 역할 영역에 등록합니다.
나는 네가 위의 잘못이 없다는 것을 확인할 수 있을 것이라고 생각한다.
하지만 모든 것이 내장 범위에 등록되면 상당히 위험한 코드가 될 수 있으니 주의하세요.
참고로 상술한 코드에도 print 함수가 나타나지만 내장 작용역에 존재한다.
따라서 モジュール名.print()처럼 쓸 필요가 없다.

지원


이 기사에서 내장 범위에 주력하고 싶어서 언급하지 않았지만 실제로는'저장 범위'라는 범위도 있으니 관심 있는 분들은 조사해 주십시오.

참조 페이지

  • Python 역할 도메인 정보
  • [Python 입문] 함수의 국부 변수와 역할 영역: Python 입문(2/3페이지) - @IT(atmarkit.co.jp)
  • [Python 입문] 이해 범위, 코드 읽기 능력 향상
  • 좋은 웹페이지 즐겨찾기