본문 바로가기
Programming/Python

[python] 보안프로그래밍3 기말고사 정리(4)

by graygreat 2017. 6. 14.
728x90
반응형


이름공간


● 이름 공간 또는 스코프 : 이름이 존재하는 장소

    파이썬은 실행 시간에 각 이름들을 적절한 이름 공간에 넣어 관리함.


● 이름 공간의 종류


◎ 지역(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 가능


◎ 코드를 숨기는 간단한 기법으로 활용 가능






반응형

댓글