Python 인터뷰 질문 및 답변
파이썬패스란?
Pythonpath는 Python 인터프리터에게
프로그램으로 가져올 수 있는 모듈 파일을
찾도록 지시합니다.
여기에는 Python 소스 라이브러리 디렉토리와
소스 코드 디렉토리가 포함됩니다.
Python에서 메모리는 어떻게 관리됩니까?
Python의 메모리는
Python 개인 힙 공간에서 관리합니다.
모든 Python 객체와 데이터 구조는
개인 힙에 있습니다.
이 개인 힙은 Python 인터프리터 자체에서 처리하며
프로그래머는 이 개인 힙에 액세스 할 수 없습니다.
Python 메모리 관리자는
Python 개인 힙 공간 할당을 처리합니다.
Python 개인 힙 공간용 메모리는
사용되지 않는 모든 메모리를 재활용하고 해제하는
Python의 내장 가비지 수집기를 통해 사용할 수 있습니다.
파이썬의 주요 특징은 무엇입니까?
파이썬은 인터프리터 언어입니다.
즉, C 및 그 변종과 같은 언어와 달리
Python은 실행되기 전에
컴파일할 필요가 없습니다.
다른 인터프리터 언어에는 PHP와 Ruby가 있습니다.
파이썬은 동적으로 유형이 지정됩니다.
즉, 변수를 선언하거나 이와 유사한 것을 선언할 때
변수 유형을 명시할 필요가 없습니다.
별도의 선언 없이 x = 111 다음
x = "I'm string"과 같은 작업을 수행할 수 있습니다.
Python은 구성 및 상속과 함께
클래스 정의를 허용한다는 점에서
객체 지향 프로그래밍에 매우 적합합니다.
파이썬에는 (C++의 public, private과 같은)
접근 지정자가 없습니다.
파이썬에서 함수는 일급 객체입니다.
이것은 그것들이 변수에 할당될 수 있고,
다른 함수에서 반환되어
함수로 전달될 수 있음을 의미합니다.
클래스는 또한 일급 객체입니다.
Python 코드를 작성하는 것은 빠르지만
실행하는 것은 컴파일된 언어보다
느린 경우가 많습니다.
다행스럽게도, Python은 C 기반 확장을
포함할 수 있으므로 병목 현상을
최소화할 수 있고 종종 최적화할 수 있습니다.
numpy 패키지는 이것의 좋은 예입니다.
많은 숫자 크런칭이 실제로
Python에서 수행되지 않기 때문에 매우 빠릅니다.
Python은 웹 응용 프로그램, 자동화, 과학 모델링,
빅 데이터 응용 프로그램 등
다양한 영역에서 사용됩니다.
또한 다른 언어와 구성 요소가
제대로 작동하도록 하는
"접착제" 코드로 자주 사용됩니다.
Python에서 모듈과 패키지의 차이점은 무엇입니까?
각 Python 프로그램 파일은
객체와 같은 다른 모듈을 가져오는 모듈입니다.
따라서 모듈은 프로그램을 구성하는 방법입니다.
Python 프로그램의 폴더를 모듈 패키지라고 합니다.
파이썬 네임스페이스(python namespaces)란 무엇입니까?
Python 네임스페이스는
프로그램의 개체 이름이 고유하고
충돌 없이 사용할 수 있도록 합니다.
Python은 이러한 네임스페이스를
각각의 '값으로서의 객체'에 매핑된
'키로서의 이름'이 있는 딕셔너리로 구현합니다.
네임스페이스의 몇 가지 예를 살펴보겠습니다.
로컬 네임스페이스는 함수 내부의
로컬 이름으로 구성됩니다.
함수 호출을 위해
임시로 생성되고 함수가 반환되면 지워집니다.
글로벌 네임스페이스는
진행 중인 프로젝트에서 사용 중인
다양한 가져온 모듈/패키지의 이름으로 구성됩니다.
패키지를 스크립트로 가져오면 생성되고,
스크립트가 실행될 때까지 유지됩니다.
내장 네임스페이스는
핵심 Python의 내장 함수와
다양한 예외 유형에 대한 전용 내장 이름으로 구성됩니다.
파이썬에서 데코레이터는 무엇입니까?
데코레이터는 구조를 변경하지 않고
함수에 일부 디자인 패턴을 추가하는 데 사용됩니다.
데코레이터는 일반적으로
향상되는 함수보다 먼저 정의됩니다.
데코레이터를 적용하려면 먼저
데코레이터 함수를 정의합니다.
그런 다음 적용되는 함수를 작성하고
적용해야 하는 함수 위에
데코레이터 함수를 추가하기만 하면 됩니다.
이를 위해 데코레이터 앞에 @ 기호를 사용합니다.
파이썬에서 람다 함수(lambda function)란 무엇입니까?
인라인 함수로 자주 사용되며
단일 표현식 익명 함수입니다. 새 함수 개체를 만들고 런타임에 반환하는 데 사용됩니다.
Lambda는 임의의 수의 인수를 허용하고,
임의의 수의 매개변수를 가질 수 있는
Python의 익명 함수입니다.
그러나 람다 함수는 하나의 식이나
문만 가질 수 있습니다.
일반적으로 짧은 시간 동안
익명의 함수가 필요한 상황에서 사용됩니다.
Lambda 함수는
다음 두 가지 방법 중 하나로 사용할 수 있습니다.
다음은 람다 함수의 예입니다.
a = lambda x,y : x+y
print(a(5, 6))
output: 11
(+) index와 (-) index는 무엇입니까?
양수 인덱스에는
검색 대상이 왼쪽에서 오른쪽으로 적용됩니다.
음수 인덱스의 경우
검색은 오른쪽에서 왼쪽으로 시작됩니다.
예를 들어, 크기가 n인 array list에서
양수 인덱스의 첫 번째 인덱스는 0이고
그다음에는 1이 오고
마지막 인덱스가 n-1이 될 때까지입니다.
그러나 음수 인덱스에서
첫 번째 인덱스는 -n이고
마지막 인덱스가 -1이 될 때까지 -(n-1)입니다.
Python에서 여러 줄 주석을 작성할 수 있습니까?
파이썬에는 다른 언어처럼 여러 줄 주석을
표시하는 특정 구문이 없습니다.
파이썬에서 여러 줄 주석을 표시하기 위해
프로그래머는 삼중 따옴표(''') 문자열을 사용합니다.
Numpy 배열은 중첩 list보다 어떤 이점이 있습니까?
Numpy는 모든 복잡성이
사용하기 쉬운 모듈로 뒷받침되도록
C로 작성되었습니다.
반면 list는 동적으로 유형이 지정됩니다.
따라서 파이썬은 사용할 때마다
각 요소의 데이터 유형을 확인해야 합니다.
이것은 Numpy 배열을 list보다 훨씬 빠르게 만듭니다.
Numpy에는 list에서 제공하지 않는
많은 추가 기능이 있습니다.
예를 들어 Numpy에서는 많은 것을 자동화할 수 있습니다.
깊은 복사와 얕은 복사를 어떻게 구별합니까?
새 인스턴스 유형이 생성될 때 얕은 복사본을 사용합니다.
새 인스턴스에 복사된 값을 유지합니다.
값을 복사하는 것처럼 얕은 복사도 참조 포인터를 복사합니다.
얕은 복사에서 복사된 참조점은
원본 개체를 참조합니다.
클래스의 모든 구성원에서 변경한 사항은
동일한 클래스의 원본 복사본에 영향을 줍니다.
얕은 복사는 프로그램의 더 빠른 실행을 가능하게 합니다.
깊은 복사는 이미 복사된 값을 저장하는 데 사용됩니다.
얕은 복사와 달리 개체에 대한
참조 포인터를 복사하지 않습니다.
전체 복사는 다른 객체가 가리키는
새 객체를 저장하는 것 외에도
객체에 대한 참조를 만듭니다.
원본 복사본에 대한 변경 사항은
참조되거나 저장된 개체를 사용하는
다른 복사본에 영향을 미치지 않습니다.
얕은 복사와 달리 깊은 복사는
프로그램 실행을 느리게 만듭니다.
이는 호출되는 각 개체에 대해
일부 복사본을 만들기 때문입니다.
파이썬에서 들여 쓰기가 필요합니까?
파이썬에서는 들여쓰기가 필요합니다.
코드 블록을 지정합니다.
loop, class, function 등의 모든 코드는
들여 쓰기 된 블록 내에서 지정됩니다.
일반적으로 4개의 공백 문자를 사용하여 수행됩니다.
코드를 들여쓰기하지 않으면
정확하게 실행되지 않고 오류도 발생합니다.
파이썬에서 멀티스레딩은 어떻게 달성됩니까?
멀티스레딩은 일반적으로
여러 스레드가 동시에 실행됨을 의미합니다.
Python Global Interpreter Lock은
특정 시점에서 둘 이상의 스레드가
Python 인터프리터를 보유하는 것을 허용하지 않습니다.
따라서 파이썬의 멀티스레딩은
콘텍스트 스위칭을 통해 달성됩니다.
실제로 여러 스레드에 걸쳐
여러 프로세스를 여는
멀티프로세싱과는 상당히 다릅니다.
scope resolution이란 무엇입니까?
범위는 파이썬의 객체가
관련성을 유지하는 코드 블록입니다.
파이썬의 각 객체와 모든 객체는
해당 범위 내에서 기능합니다.
네임스페이스는 프로그램 내의 모든 객체를
고유하게 식별하지만 이러한 네임스페이스에도
범위가 정의되어 있습니다.
접두사 없이 개체를 사용합니다.
변수의 접근성과 수명을 정의합니다.
코드 실행 시 생성된 범위를 살펴보겠습니다.
로컬 범위는
현재 함수에 포함된 로컬 개체를 나타냅니다.
전역 범위는
코드 실행 전체에서 사용할 수 있는 개체를 나타냅니다.
모듈 수준 범위는
프로그램의 현재 모듈과 연결된 전역 개체를 나타냅니다.
가장 바깥쪽 범위는
프로그램에서 호출할 수 있는
사용 가능한 모든 내장 이름을 나타냅니다.
텍스트 파일의 내용을 역순으로 어떻게 표시합니까?
다음 단계를 사용하여 텍스트 파일의 내용을
역순으로 표시할 수 있습니다.
- open() 함수를 사용하여 파일 열기
- 파일의 내용을 리스트에 저장
- 리스트의 내용을 뒤집습니다.
- for 루프를 실행하여 리스트를 반복합니다.
.py와 .pyc 파일의 차이점은 무엇입니까?
.py 파일은 파이썬 소스 코드 파일입니다.
.pyc 파일에는 python 파일의
바이트 코드가 포함되어 있습니다.
.pyc 파일은 다른 소스에서 코드를 가져올 때 생성됩니다.
인터프리터는 소스 .py 파일을
.pyc 파일로 변환하여 시간을 절약합니다.
Django 프레임워크를 사용해야 하는 이유는 무엇입니까?
Django를 디자인하는 주요 목표는
Django가 사용하는 다음과 같이
사용자에게 단순하게 만드는 것입니다.
- 개발자가 전체 일정을 처음부터 시작하지 않고도
한 번에 둘 이상의 반복을 완료할 수 있음을 의미하는
신속한 개발에 관한 원칙 - DRY 철학 - Do not Replicate Yourself - 이는
개발자가 살아남은 코드를 재사용하고
개별 코드에 집중할 수 있음을 의미합니다.
Django 세션을 설명하시겠습니까?
세션은 웹 응용 프로그램에 의한 상호 작용 시
특정 서버 측에 정보를 저장하는 메커니즘을 포함합니다.
기본적으로 세션은 데이터베이스에 예약되어 있으며
파일 기반 및 캐시 기반 세션을 허용합니다.
Django에서 쿠키를 사용하는 이유는 무엇입니까?
쿠키는 클라이언트의 브라우저에
특정 시간 동안 저장되는 정보입니다.
특정 시간이 완료되면
쿠키가 클라이언트 브라우저에서 자동으로 제거됩니다.
Python에서 리터럴이란 무엇이며 다양한 리터럴에 대해 설명합니다.
파이썬 소스 코드의 리터럴은
기본 데이터 유형에 대한 고정 값을 나타냅니다.
파이썬에는 5가지 유형의 리터럴이 있습니다.
- 문자열 리터럴
문자열 리터럴은 작은따옴표 또는 큰 따옴표로 묶인
일부 텍스트를 변수에 할당하여 생성됩니다.
여러 줄 리터럴을 만들려면
삼중 따옴표로 묶인 여러 줄 텍스트를 할당합니다. - 문자 리터럴
큰따옴표로 묶인 단일 문자를 할당하여 생성됩니다. - 숫자 리터럴
정수, 부동 소수점 값 또는 복소수가 될 수 있는
숫자 값을 포함합니다. - 부울 리터럴
True 또는 False의 2가지 값이 될 수 있습니다. - 리터럴 컬렉션 - 4가지 유형이 있습니다.
a) 리스트 컬렉션 - 예. a=[1,2,3,'Amit']
b) 튜플 리터럴 - 예. a=(5,6,7,8)
c) 사전 리터럴 - 예. dict={1: '사과', 2: '망고, 3: '바나나''}
d) 셋 리터럴 - 예. {"타냐", "로히트", "모한"} - 특수 리터럴
Python에는 null 변수를 반환하는 데 사용되는
1개의 특수 리터럴 None이 있습니다.