728x90
반응형
해당 포스팅은 코드잇 복습을 위한 포스팅입니다.
문제 발생 시 즉시 비공개 처리 하겠습니다.
scope(범위)
print(x)를 붙이면 name ‘x’ is not defind라는 오류가 출력된다.
분명 2번 줄에서 x를 정의 했는데 왜 정의한 적이 없다고 하는 걸까..
그 이유는 my_function 내에서 정의 했기 때문이다. 즉 my_function은 로컬변수(함수)인데 그 안에서만 정의된 것이다. 그래서 아래와 같이 로컬 함수 밖에서 글로벌 변수 → x = 2로 정의를 해준다.
글로벌변수는 2, 로컬변수는 3으로 설정해두었다. 그러면 3과 2가 순서대로 출력된다.
함수에서 변수를 사용하면 항상 로컬변수가 있는지 확인하고 그 다음에 글로벌변수를 확인한다.
파라미터의 경우
파라미터도 로컬변수로 볼 수 있다.
캡쳐와 같이 square 파라미터에 3을 지정해뒀다. 그러면 x에 정수 3이 올라가고 3은 square 함수 내에서만 사용가능한 로컬변수인 것이다.
요약
scope: 변수가 사용 가능한 범위
로컬변수: 변수를 정의한 함수 내에서만 사용 가능
글로벌변수: 모든 곳에서 사용 가능
함수에서 변수를 사용하면, 로컬 변수를 먼저 찾고 나서 글로벌 변수를 찾음
728x90
반응형
'파이썬 > 코드잇' 카테고리의 다른 글
Python 22. 스타일 복습 with 코드잇 (0) | 2023.04.13 |
---|---|
Python 21. 상수 복습 with 코드잇 (0) | 2023.04.13 |
Python 19. 옵셔널 파라미터, Syntactic Sugar 복습 with 코드잇 (0) | 2023.04.12 |
Python 18. return 문 복습 with 코드잇 (0) | 2023.04.12 |
Python 17. 추상화 복습 with 코드잇 (0) | 2023.04.12 |