[Python] Interview QnA 100

Dev_Honey·2022년 6월 28일
0

Interview

목록 보기
2/2
post-thumbnail

Python Interview 11 ~ 20

Q11.What is the difference between .py and .pyc files?

.py 파일은 파이썬의 소스코드 파일 !
.pyc 파일은 파이썬 파일의 바이트 코드가 들어있다.
.pyc 파일은 다른 소스에서 코드를 가져올 때 생성이된다.
인터프리터는 소스 파일인 .py 파일을 .pyc로 바꾸는데, 이는 시간을 절약할 수 있게 해준다.
.pyc 파일은 python 언어를 컴파일해 놓은 파일인데 이 안에는 원시 파이썬 코드가 컴파일된 byte 코드가 존재한다.
파이썬 가상 머신(virtual machine)은 컴파일러와 인터프리터가 있다.
인터프리터는 .py 파일에 작성된 원시 파이썬 코드를 곧바로 해석할 수 없다.
그렇기 때문에 우선 원시 코드는 byte 코드로 변환되어야 한다. 이 과정에서 .pyc 파일이 생성되고 그 안에 byte 코드가 작성된다.
.pyc 파일이 이미 생성되어 있으면 다시 컴파일할 필요 없이 바로 시스템에 byte 코드를 적재한다.
.pyc 파일은 캐시처럼 취급된다. 미리 byte 코드를 만들어 놓고 인터프리터로 코드를 실행하기 때문에 속도가 향상된다.

Q12.What is slicing in Python?

슬라이싱(slicing)이란 무언가를 잘란 낸다는 뜻으로 연속적인 객체(리스트, 튜플, 문자열)에 부여된 번호를 이용해 연속된 객체에 일부를 추출하는 작업이다.
같이 보면 좋은 것이 indexing이 있다.
인덱싱(indexing)이란 무언가를 가리킨다는 뜻으로 연속적인 객체(리스트, 튜플, 문자열)에 부여된 번호를 의미한다. 쉽게 말해서 원하는 값을 가리킬 때 indexing을 사용한다.
Slicing을 사용하는 방법은 objects = [start:end:step] 과 같이 사용하면 된다.
(보충)
start : 객체에서 가져올 시작 인덱스(index)값 !
start 인덱스(index)값부터 객체에 일부를 가져온다.
end : end는 말 그대로 마지막 객체까지의 값을 가져올 인덱스(index)값 ! 여기서 주의해야 될 점은 start는 start 인덱스(index) 값부터 시작이지만 end는 end 인덱스(index)값 전까지 객체를 온다는 것! .
step: step은 step 인덱스(index) 만큼 건너뛰어서 객체 값을 가져온다. (default 값은 1)
ex)
a = 'apple'
객체 = [start:end:]
print(a[0:3:]) # 0 ~ 2까지 문자열 출력, 출력값: app
객체 = [start::]
print(a[0::]) # 0 ~ s의 마지막 문자열까지 출력, 출력값: apple
객체 = [:end:]
print(a[:4:]) # s 문자열 길이 3까지 출력, 출력값: appl

Q13.What are Keywords in Python?

파이썬에서 키워드는 특별한 의미가 있는 예약어이다.
일반적으로 변수의 type을 정의하는 데 사용된다.
변수 또는 함수 이름에는 키워드를 사용할 수 없다는 점!
33가지 정도 되는데 아래와 같다.
And
Or
Not
If
Elif
Else
For
While
Break
As
Def
Lambda
Pass
Return
True
False
Try
With
Assert
Class
Continue
Del
Except
Finally
From
Global
Import
In
Is
None
Nonlocal
Raise
Yield

Q14.What are Literals in Python and explain about different Literals

리터럴(liternal)은 "값" 그 자체로, 고정된 값을 표현하는 것을 의미
파이썬에는 다음과 같은 다양한 유형의 리터럴이 있다.
숫자 리터럴, 문자열 리터럴, 논리 리터럴, 특수 리터럴 등

  1. 숫자 리터럴
    정수 리터럴, 실수 리터럴, 복소수 리터럴 3가지가 있다.
    정수 리터럴 : 0b로 시작하면 2진수, 0o로 시작하면 8진수 ,0~9로 시작하면 10진수, 0x로 시작하면 16진수
    실수 리터럴 : 소숫점을 포함하거나 e를 포함.
    복소수 리터럴 : j로 끝나면 복소수의 허수를 나타냄.
- Integer Literals
a = 0b1010 # Binary Literals
b = 100 # Decimal Literal
c = 0o310 # Octal Literal
d = 0x12c # Hexadecimal Literal
- Float Literal
float_1 = 10.5
float_2 = 1.512e2
- Complex Literal
x = 1.1 + 3.14j
print(a, b, c, d)
print(float_1, float_2)
print(x, x.real, x.imag)
실행 결과
10 100 200 300
10.5 151.2
(1.1+3.14j) 1.1 3.14
  1. 문자 리터럴
    문자열 리터럴은 따옴표로 묶인 일련의 문자이다. 문자열에 대해 단일, 이중 또는 삼중 따옴표를 모두 사용할 수 있다. 그리고 문자 리터럴은 작은 따옴표 또는 큰 따옴표로 묶인 단일 문자이다.
- String Literals
strings = "This is Python"
char = "C"
multiline_str = """This is a multiline string with more than one line code."""
unicode = u"\u00dcnic\u00f6de"
raw_str = r"raw \n string"
print(strings)
print(char)
print(multiline_str)
print(unicode)
print(raw_str)
실행 결과
This is Python
C
This is a multiline string with more than one line code.
Ünicöde
raw \n string
※ "r"문자는 raw string으로 백슬래시 문자를 해석하지 않고 남겨두기 때문에 정규표현식과 같은 곳에 유용

3.논리값 리터럴(boolean)
논리값 리터럴은 다음 두 값 중 하나를 가질 수 있다. True 또는 False.

- Boolean Literals
x = (1 == True)
y = (1 == False)
a = True + 4
b = False + 10
print("x is", x)
print("y is", y)
print("a:", a)
print("b:", b)
실행 결과
x is True
y is False
a: 5
b: 10
  1. 특수 리터럴
    파이썬에는 특별한 리터럴이 하나가 들어 있다.
    None. 우리는이 필드를 사용하여 생성되지 않은 필드를 지정한다.
- Special Literals
drink = "Available"
food = None
def menu(x):
    if x == drink:
        print(drink)
    else:
        print(food)
menu(drink)
menu(food)
실행 결과
Available
None
  1. 컬렉션 리터럴
    [ ... ]로 감싸져 있으면 list자료형
    ( ... )로 감싸져 있으면 tuple자료형
    { 키:값, ... }로 감싸져 있으면 dictionary자료형
    { ... }로 감싸져 있으면 set자료형
- Literal Collections
fruits = ["apple", "mango", "orange"]  # **list**
numbers = (1, 2, 3)  # **tuple**
alphabets = {'a': 'apple', 'b': 'ball', 'c': 'cat'}  # **dictionary**
vowels = {'a', 'e', 'i', 'o', 'u'}  # **set**
print(fruits)
print(numbers)
print(alphabets)
print(vowels)
실행 결과
['apple', 'mango', 'orange']
(1, 2, 3)
{'a': 'apple', 'b': 'ball', 'c': 'cat'}
{'a', 'e', 'u', 'o', 'i'}

Q15.How to combine dataframes in pandas?

pandas dataframe을 만들기 위해서는 먼저
import pandas as pd
임포트 시켜준다.

Join 이란?
두 개의 DataFrame을 합치는 것
열기준 컬럼명으로 합치기 : merge
열기준 Index명로 합치기 : merge, concat
행기준으로 합치기 : concat, append

합치는 방법은?

  • Inner join : 두 DataFrame의 기준 컬럼에서 둘 다 존재하는 데이터만 Join
  • Left Outer join : 왼쪽 DataFrame으로 합치기
  • Right Outer Join : 오른쪽 DataFrame으로 합치기
  • Outer Join : 두 DataFrame의 모든 Data를 합치기

Merge 명령어 사용법?

  • pd.merge(left, right, how, on, left_on, right_on, left_index, right_index)
  • left : Merge 할 왼쪽 DataFrame
  • right : Merge 할 오른쪽 DataFrame
  • how : inner, left, right, outer
  • on : 두 DataFrame을 Join할 기준 컬럼명(컬럼명이 동일할 경우)
  • left_on : Join할 기준 컬럼의 왼쪽 DataFrame의 컬럼명
  • right_on : Join할 기준 컬럼의 오른쪽 DataFrame의 컬럼명
  • left_index : 왼쪽 DataFrame index로 Join할 경우 True
  • right_index : 오른쪽 DataFrame index로 Join할 경우 True

concat 명령어 사용법?
pd.concat([left,right], axis, join,...)
[left,right] : left DataFrame과 right DataFrame으로 이루어진 List
axis = 0 : 행기준으로 합치기, 1: 열기준으로 Index명으로 합치기

Q16.What are the new features added in Python 3.9.0.0 version?

  • 새로운 dictionary 기능 Merge(|) 및 Update(|=)
  • 접두사 및 접미사를 제거하는 새로운 문자열 method
  • 표준 컬렉션의 type hint generic
  • LL1이 아닌 PEG 기반의 새로운 파서
  • zoneinfo 및 graphlib와 같은 새로운 모듈
  • ast, asyncio 등과 같은 개선된 모듈
  • 할당을 위한 최적화된 관용구, 신호 처리, 최적화된 파이썬 내장 함수 등과 같은 최적화
  • 더 이상 사용되지 않는 구문 분석기 및 기호 모듈, 사용되지 않는 기능 등과 같은 사용되지 않는 기능 및 명령, 잘못된 메소드, 기능 등의 제거

Q17. How is memory managed in Python?

파이썬의 메모리 관리는 python private heap space 에 의해 관리.
모든 Python 개체 및 데이터 구조는 private heap에 있다.
프로그래머는 이 private heap에 액세스할 수 없.
파이썬 인터프리터가 대신 이것을 처리한다.
Python 객체에 대한 heap space 할당은 Python의 메모리 관리자에 의해 수행된다.
주요 API는 프로그래머가 코딩할 수 있는 일부 tools에 대한 접근을 제공합니다.
Python에는 사용하지 않는 모든 메모리를 재활용하여 heap space에서 사용할 수 있도록 하는 Garbage Collector가 내장되어 있다.

Q18. What is namespace in Python?

네임스페이스(namespace, 이름공간)란 프로그래밍 언어에서 특정한 객체(Object)를 이름(Name)에 따라 구분할 수 있는 범위를 의미한다.
파이썬 내부의 모든 것은 객체로 구성되며 이들 각각은 특정 이름과의 매핑 관계를 갖게 되는데 이 매핑을 포함하고 있는 공간을 네임스페이스라고 한다.
네임스페이스가 필요한 이유는 다음과 같다.
프로그래밍을 수행하다보면 모든 변수 이름과 함수 이름을 정하는 것이 중요한데 이들 모두를 겹치지 않게 정하는 것은 사실상 불가능하다.
따라서 프로그래밍언어에서는 네임스페이스라는 개념을 도입하여, 특정한 하나의 이름이 통용될 수 있는 범위를 제한한다. 즉, 소속된 네임스페이스가 다르다면 같은 이름이 다른 개체를 가리키도록 하는 것이 가능해진다.
(참고)
파이썬의 네임스페이스는 3가지로 분류할 수 있다:

  • 전역 네임스페이스: 모듈별로 존재하며, 모듈 전체에서 통용될 수 있는 이름들이 소속된다.
  • 지역 네임스페이스: 함수 및 메서드 별로 존재하며, 함수 내의 지역 변수들의 이름들이 소속된다.
  • 빌트인 네임스페이스: 기본 내장 함수 및 기본 예외들의 이름들이 소속된다. 파이썬으로 작성된 모든 코드 범위가 포함된다.

파이썬의 네임스페이스는 다음과 같은 특징들을 가지고 있다.

  • 네임스페이스는 딕셔너리 형태로 구현된다.
  • 모든 이름 자체는 문자열로 되어있고 각각은 해당 네임스페이스의 범위에서 실제 객체를 가리킨다.
  • 이름과 실제 객체 사이의 매핑은 가변적(Mutable)이므로 런타임동안 새로운 이름이 추가될 수 있다.
  • 다만, 빌트인 네임스페이스는 함부로 추가하거나 삭제할 수 없다.

Q19. What is PYTHONPATH?

모듈을 가져올 때 사용되는 환경 변수입니다.
모듈을 가져올 때마다 PYTHONPATH도 조회되며, 다양한 디렉토리에서 가져온 모듈이 있는지 확인합니다.
인터프리터는 이를 사용하여 로드할 모듈을 결정합니다.

python의 기본 모듈 중 os 모듈은 환경 변수 기능도 제공한다.
- PATH 조회
>> import os
>> os.environ['PATH']
'C:\\ProgramData\\Anaconda3\\Library\\bin;C:\\ProgramData\\Anaconda3;C:\\ProgramData\\Anaconda3\\Scripts;C:\\Program Files (x86)\\Graphviz2.38\\bin;...
- PATH 추가
>> import os
>> env = os.environ
>> newpath = r'D:\DevProg\HFC3.0\resource\Distrib-x64-2017-08-21;'+env['PATH']
>> env['PATH'] = newpath

Q20. What are python modules? Name some commonly used built-in modules in Python?

Python 모듈은 Python 코드가 포함된 파일입니다. 이 코드는 함수,클래스, 변수일 수 있습니다. Python 모듈은 실행 코드가 포함된 .py 파일입니다.

일반적으로 사용되는 내장 모듈은 다음과 같습니다.

  • os
  • sys
  • math
  • random
  • data time
  • JSON
    .......등등

출처

profile
자습서 같은 공부 블로그 만들기!

0개의 댓글