이름공간
● 이름 공간 또는 스코프 : 이름이 존재하는 장소
파이썬은 실행 시간에 각 이름들을 적절한 이름 공간에 넣어 관리함.
● 이름 공간의 종류
◎ 지역(Local) : 각 함수 내부
◎ 전역(Global) : 모듈(파일) 내부
◎ 내장(Built-in) : 파이썬 언어 자체에서 정의한 영역
● 변수가 정의되는 위치에 의해 변수의 스코프가 정해짐
◎ 파이썬에서 변수의 정의
- 변수가 l-value로 사용될 때
● 변수가 r-value로 사용될 때 해당 변수의 값을 찾는 순서 규칙
◎ L --> G --> B
● a = 1에서 a라고 하는 것이 =의 왼쪽에 존재 시 a는 l-value
● b = a를 하게 되면 b는 l-value, a는 r-value
# g, h는 전역 변수 g = 10 h = 5 def f(a): # a는 지역 변수 h = a + 10 # h는 지역, 새로운 l-value로 정의했음 b = h + a + g # b도 지역, g는 r-value이므로 기존 값을 참조 - 전역변수 return b print f(h) print h
// 결과값
30
5
h = 5 def f(a): global h h = a + 10 return h print f(10) print h
// 결과값
20
20
[주의] 동일 함수 내에서 동일한 변수가 지역변수와 전역변수로 동시에 활용될 수 없음
- 함수 내에서 정의되는 변수는 지역 변수로 간주
- 지역 변수로 선언되기 이전에 해당 변수를 사용할 수 없음
g = 10 def f(): a = g g = 20 return a print f()
// 결과값
error
g = 10 def f(): global g a = g g = 20 return a print f()
// 결과값
10
컴파일과 적재시간
● import mymath를 수행할 때 발생하는 일
1) 우선 mymath.pyc를 찾는다.
2) mymath.pyc가 없다면 mymath.pyc를 생성한다.
3) 생성된 mymath.pyc를 메모리로 읽어들여 수행한다.
● .pyc 파일
◎ 바이트 코드 파일
- 기계나 플랫폼(OS)에 의존하지 않도록 만들어진 일종의 목적 코드(Object Code)
- 파이썬은 컴파일 언어이면서 동시에 인터프리터 언어의 수행방식을 취하고 있다.
◎ 원래 mymath.py가 import되는 순간 바이트 코드와 같이 생성
◎ 바이너리 파일도 아니고, 텍스트 파일도 아닌 중간 역할
◎ .pyc 파일은 처음 생성 후 다시 생성 가능
◎ 바이트 코드는 문자들로 이루어짐
◎ .pyc의 내용은 일반적으로 내용 확인 불가
◎ py 없이 pyc만 존재해도 모듈로서 역할 가능
● 새로운 .pyc 생성에 대한 판단
◎ .py 수정 시간이 .pyc 수정 시간보다 더 최근일 때
● .py가 없이 .pyc 파일만 있어도 import 가능
◎ 코드를 숨기는 간단한 기법으로 활용 가능
'Programming > Python' 카테고리의 다른 글
[python]보안프로그래밍3 기말고사 정리(5) (0) | 2017.06.14 |
---|---|
[python] 보안프로그래밍3 기말고사 정리(3) (0) | 2017.06.14 |
[python] 보안프로그래밍3 기말고사 정리(2) (0) | 2017.06.14 |
[python] 보안프로그래밍3 기말고사 정리(1) (0) | 2017.06.13 |
[python] 보안프로그래밍3 중간고사 정리 (5) (2) | 2017.04.25 |
댓글