질문 리스트
- How is memory managed in Python?
- What is namespace in Python?
- What is PYTHONPATH?
- What are python modules?
- Name some commonly used built-in modules in Python? What are local variables and global variables in Python?
1. How is memory managed in Python?
파이썬은 메모리를 자동으로 관리 해준다.
(그래서 실질적으로 개발자가 메모리 관리를 할 필요는 없다.)
하지만
Python은 모든 것을 객체(object)로 관리한다.
예시)
x = 10
print(type(x))
>> <class 'int'>
C언어에서는 int x = 10 과 같이 선언하면 바로 메모리에 할당되지만
Python 에서는 x = 10과 같이 선언하면 int 라는 object 를 만들어서 변수 x가 그 객체를 가리키는 형태이다
<class 'int'> → (class를 구체화 한 것이 object)
Everyting is an object in python.
객체가 더이상 필요하지 않으면 파이썬 메모리 관리자가 자동으로 객체에서 메모리를 회수하는 방식을 사용하므로,
파이썬은 동적 메모리 할당 방식을 사용한다고 말할 수 있다.
2. What is namespace in Python?
네임스페이스(namespace) 이란?
네임스페이스는 프로그래밍 언어에서 특정한 객체(Object)를 이름(Name)에 따라 구분할 수 있는 범위를 의미한다.
(파이썬 내부의 모든것은 객체로 구성되며 이들 각각은 특정 이름과의 매핑 관계를 갖게 되는데 이 매핑을 포함하고 있는 공간을 네임스페이스라고 한다.)
필요한 이유
프로그래밍을 수행하다보면 모든 변수 이름과 함수 이름을 정하는 것이 중요한데 이들 모두를 겹치지 않게 정하는 것은 사실상 불가능하다.
이러한 이름 지정 충돌(naming conflicts)을 피하기 위해, 네임스페이스라는 개념을 도입하여, 특정한 하나의 이름이 통용될 수 있는 범위를 제한한다.
즉, 소속된 네임스페이스가 다르다면 같은 이름이 다른 개체를 가리키도록 하는 것이 가능하다.
네임스페이스의 종류
- Global Namespace 전역 네임스페이스
- Local Namespace 지역 네임스페이스
- Built-in Namespace 빌트인 네임스페이스
아래와 같이 변수들이 namespace의 종류에 따라 저장된다
3. What are python modules?
Name some commonly used built-in modules in Python?
모듈(module)이란?
모듈이란 함수나 변수 또는 클래스를 모아 놓은 파이썬 파일이다.
모듈을 사용하면, 다른 코드에 적용하기가 쉬워지므로 이식성이 좋아진다.
우리는 파이썬으로 프로그래밍을 할 때 매우 많은 모듈을 사용한다.
다른 사람들이 이미 만들어 놓은 모듈을 사용할 수도 있고 우리가 직접 만들어 사용할 수도 있다.
📗 모듈 종류
- 내장 모듈 (built-in modules)
- 사용자 정의 모듈 (user-defined modules)
- 제 3자의 라이브러리 모듈
내장 모듈 (built-in module)이란?
내장 모듈이란 파이썬을 설치 할 때 기본적으로 자동으로 제공되는 모듈이다.
자주 사용되는 빌트인 모듈(built-in module)의 예시는 다음과 같다.
내장 함수 종류
- os
- sys
- math
- random
- datetime
- urllib
📏제3자 라이브러리 모듈
제3자에 의해 제공된 라이브러리에 포함된 모듈
예시
- numpy.random
- matplotlib.pyplot
- pygame.mixer
- ...etc
🔨 사용자 정의 모듈 (user-defined modules)
사용자가 직접 만든 모듈
(제3자의 라이브러리도 사실상 사용자가 직접 만든 모듈이다.)
4. What is PYTHONPATH?
PYTHONPATH 이란?
Python의 모듈을 import 할 때 사용하는 환경 변수이다.
즉 PYTHONPATH는 Python 인터프리터에게 Python 모듈의 위치를 알려주는 역할을 한다.
(무슨 뜻인지 잘 모르겠다,,, 이를 이해하기 위해 모듈과 환경변수를 이해해야한다.)
🎈환경변수 (Enviroment Variable, ENV)이란?
환경변수(Environment Variable)는 운영체제에서 시스템의 환경을 구성하는 변수이다.
시스템의 환경을 구성하는 변수는 운영체제나 프로그램이 실행될 때 해당 변수를 참조하여 작동한다.
참고자료)
https://cosmosproject.tistory.com/386?category=941274
5. What are local variables and global variables in Python?
파이썬에서의 지역 변수(Local Variables)와 전역 변수(Global Variables)는 변수의 범위에 따라 구분된다.
지역 변수 (Local Variables)
지역 함수는 함수 내부에 선언된 변수를 말한다. 그래서 함수 내에서만 유효한 변수이다.
😎 특징
- 함수가 호출될 때 생성되고, 함수의 실행이 끝나면 사라진다.
- 다른 함수 내에서 동일한 이름의 변수를 사용해도 각각이 독립적으로 존재한다.
- 함수 내부에서만 접근 가능하며, 함수 외부에서는 알 수 없다.
def example_function():
x = 10 # x는 example_function 함수의 지역 변수
print(x) # 에러: example_function 내에서 정의된 x에 외부에서 접근할 수 없음
전역 변수 (Global Variables)
전역 변수는 함수 외부 또는 전역 공간에 선언된 변수이다. 프로그램의 모든 함수에서 전역변수에 접근할 수 있다.
😎 특징
- 프로그램이 시작될 때 생성되고, 프로그램이 종료될 때까지 유지된다.
- 함수 내에서 전역 변수를 사용하려면 global 키워드를 사용해야 한다
y = 20 # y는 전역 변수
def another_function():
print(y)
another_function() # 전역 변수 y를 사용하여 출력
def modify_global_variable():
global y # 전역 변수 y를 사용하겠다고 선언
y = 30
print(y)
modify_global_variable() # 전역 변수 y의 값을 변경하고 출력
print(y) # 전역 변수 y의 변경 내용이 반영됨
참고 자료)
https://github.com/boostcamp-ai-tech-4
'면접 준비' 카테고리의 다른 글
[면접 준비] Amazon의 OLP와 STAR란? (Ownership, Leadership, and Persistence) (0) | 2024.03.02 |
---|---|
[면접 준비] [Python 파이썬] 면접 질문 개념 정리 #01 (리스트 & 튜플, 인터프리터, PEP8) (0) | 2023.03.12 |