본문 바로가기
프로그래밍 언어/파이썬

12.기타

by Jinger 2023. 3. 20.

서론

    앞에 글들에서 빠진 글에 넣기 애매했던 파이썬에 대한 내용들을 이곳에 정리하였으니 참고 바란다.


지수 표현

   파이썬에서 지수 표현하기 위해 "e(E)"를 사용한다. "e"는 "10^"을 의미한다. 예를 들어 3141592e-6은  3.141592을 의미한다. 지수 표현을 지워 사용학고 싶으면 보통 pandas나 numpy를 이용한다.

%

    %는 파이썬에서 문자열 포메팅(string formatting)에서도 사용된다. 문자열 포메팅이란 출력하는 문자열의 특정 위치에 특정한 값(변수)을 삽입하여 출력하는 것을 의미한다. 다음처럼 사용할 수 있습니다. % 기호 뒤에는 자료형을 가리키는 문자를 쓴다. (%s:문자열, %d: 정수, %f: 실수, %o: 8진수, %x: 16진수, %%: 문자 % 표현)

:, ->

    함수를 정의할 때, :-> 를 주석으로 쓸 수 있다. 구체적으로, 안전한 프로그래밍을 위해 함수를 정의할 때 변수의 자료형과 return 값의 자료형태를 명시하는 용도로 쓰입니다. 코드의 작동에 영향을 주지는 않지만, 실수를 미연에 방지하는 프로그래밍을 가능하게 도와준다.(' : '  변수 타입 주석, ' -> '  함수 타입 주석)


is

    "is"키워드는 두 객체가 동일한 객체인 확인하는 키워드이다. "=="연사자은 오로지 ''만을 확인하지만, is키워드는 '객체'가 동일한 지 확인하기에 다른 결과가 나온다.

assert

     assert는 이 조건일 때 보증 및 확인하기 위해 쓰인다. "assert 조건, 오류메시지"로 사용이 된다. 조건이 참인 경우 그대로 코드 진행, 거짓인 경우 "AssertionError"를 발생하여 오류메시지를 콘솔에 띄운다. '오류메시지'부분은 생략이 가능하다.

age = int(input("나이 입력 : "))
assert age >= 0, '음수 값이 들어왔습니다.'
print(f"당신의 나이는 : {age} 입니다")

여태 블로그에 쓰인 키워드 정리이다.

더보기

키워드 정리

1.조건

- if: 조건이 '참'인 경우 실행되는 if문에서 사용

-else: if문과 같이 쓰이며 조건이  만족하지 않을 경우 실행되는 코드를 작성 시 사용

-elif: else if 조건으로 '그렇지 않고 ~이면'의 형태로 조건을 정의하여 코드 작성을 할 때 사용

-not: not게이트

-or: 논리 연산자, 둘 중 하나만 참이어도 참

-and: 논리연산자, 둘 다 참일 경우만 참

-is: 두 객체의 동등성확인

-True: '참' 상수

-False: '거짓' 상수

-None: 값의 부재

 

2.루프

-for: for 루프

-in: 멤버십 확인 연산자, for루프에서 시퀀스 객체 순회

-while: while 루프

-break: 특정 조건에 따라 루핑 구조로 작업하는 동안 제어 흐름을 중단하는 데 사용

-as: 두 연산을 한 쌍으로 실행할 때 with as와 함께 사용

-continue: 조건에 따라 현재 반복을 건너 뜀

 

3.내장함수

-print:  지정한 값을 화면에 출력할 때 사용

-pass: null문, 파이썬에서 자리 표시자로 사용

-del: 삭제 명령어

 

4.클래스, 모듈, 함수

-class: OOP에서 클래스를 정의할 때 사용

-def: 함수를 정의하는 데 사용

-global: 전역 변수

-lambda: 람다 함수 생성

-nonlocal: 중첩 함수로 작업할 때 로컬이 아닌 변수 선언

-yield: 리턴 생성기

-import: 모듈에서 함수, 클래스, 변수를 가지고 옴

-return: 함수 값 반환

-from: 모둘에서 함수, 프로그램을 가져오기 위해 import와 함께 사용

 

5.오류처리

-try: 예외를 초래할 수 있는 코드 줄을 블록으로 나타냄

-expect: 예외 처리

-finally: 예외 발생가 상관없이  try문을 나갈 때 항상 실행

-raise: 예외 발생

-assert: 조건이 '참'인지 확인

-with: 코드를 명확하게 


High Level

   파이썬은 기계보다 사람이 이해하기 더 편한 하이 레벨(고급)언어이다.

Hybrid(Compiled, Interpreted)

  프로그래밍 언어는 컴파일드 언어와 인터프리터 언어로 나뉘어진다. 인터프리터 언어는 순수 인터프리터와 하이브리드로 나뉘어진자. 첫 시간에 파이썬은 인터프리터 언어라 설명을 하였지만 정확히는 하이브리드 언어이다.

프로그램 빌드 방식 간략 설명

   컴파일드 언어는 소스코드 전체를 기계어로 바로 번역한다. 인터프리터 언어는 소스코드 한 줄씩 읽으며 실행한다. 하이브리드 언어는 소스코드 전체를 중간코드(바이트 코드)로 번역한 뒤 가상머신(VM)에서 한 줄씩 실행하는 방식이다.

컴파일러 언어 장/담점

   컴파일 언어는 빌드가 완료된 실행가능한 파일은 실행 속도가 빠르다는 장점과 매번 번역할 필요 없이 실행 파일만 실행하면 되기 때문에 전체적인 시간면에서 효율적이라는 장점이 있다. 반면 단점으로는 프로그램을 수정해야 할 경우 처음부터 빌드과정을 다시 거쳐야 하기 때문에 특히나 대규모 프로그램에서는 생산성이 떨어지며 플랫폼에 매우 의존적이다.

인터프리터 언어 장/단점

    인터프리트 언어는 컴파일과정 없이 바로 실행하기 때문에 수정, 디버깅에 유리하다. 즉 개발속도에 유리하다. 그리고 각 플랫폼에 지원하는 인터프리터만 있다면 실행 가능하기 때문에 플랫폼에 독립적이라는 장점이 있다. 단점으로 빌드되어있는 컴파일 언어 프로그램보다 실행시간이 느리고 코드를 열면 다 보이기 때문에 보안에 좋지는 않다는 단점이 있다.

하이브리드 언어 장/단점

   하이브리드 언어의 장점으로 각 플랫폼에 지원하는 가상머신 있다면 실행 가능하기 때문에 플랫폼에 독립적이라는 장점이 있다. 반면에 컴파일 언어처럼 하드웨어를 직접 제어하는 작업은 불가능하다는 단점이 있다.

Indentation 기반

    Indentation란 들여 쓰기로 블록을 구분 짓기위해 사용된다. 반복문, 조건문, 함수 정의, 클래스, 예외 처리 등에서 사용된다. 다른 언어에서는 ‘{}’를 이용하여 구분을 짓고 보기 편하게 하기위해 들여쓰기를 히지만, 파이썬은 오직 들여쓰기로 블록을 구분 짓기에 들여쓰기을 일정하게 짓는 것이 필수적인 문법이다.

동적타입

     파이썬은 타입(자료형)이 동적으로 변하는 언어이다. 동적언어의 자료형은 실행될 때 결정된다. 최근 파이썬 3.6 버전부터 정적타입을 지원한다고 하지만 아직 파이썬에서 정적타입을 쓰는 문화와 이전 소스가 없어 적극 활용되지 않는다.


가비지콜렉터(GC, Garbage Collector)

    우리는 코딩을 할 때 메모리에 대해 생각하지 않고 코딩을 한다. 이게 가능한 이유는 가비지콜렉터가 존재하기 때문이다. 파이썬에서 사용되는 메모리 관리법은 레퍼런스 카운팅(Reference Counting)이다. 우리가 객체를 만들 때 그것이 얼마나 자주 사용되는지 카운트하는 것이다. 캐시 메모리의 교체 방식에서 LRU(Least Recently Used)가 참조 횟수를 카운트해서 victim을 고르는 것과 비슷하다. 즉, 파이썬은 우리가 객체를 생성해서 사용할 때마다 해당 객체의 reference count를 1씩 증가시키고, 해제할 때 1씩 감소시킨다. 이것이 0이 되면 객체의 메모리 할당이 해제된다.


이터레이터

    이터레이터란 순서대로 다음 값을 리턴하는 객체를 의미한다. "next()"메서드를 통해 다음 값을 가져올 수 있다. 주의해야 할 점은 순서가 존재해야 한다는 점이다. 즉, 컬렉션 타입(여러 개의 요소(객체)를 갖는 데이터 타입: list, tuple, set, dictionary)이 아니라 시퀀스 타입(순서가 존재하는 데이터 타입: list, tuple, range, str) 이어야 한다. "__iter__"와  "__next__"을 이용한 메서드를 통해 이터레이터 객체를 만들 수 있는 클래스를 선언할 수 있다.

class 이터레이터이름:
    def __iter__(self):
        코드
 
    def __next__(self):
        코드

제너레이터

    제너레이터(generator)를 통해 보통 함수는 하나의 값을 반환하지만, 연속된 값을 차례대로 반환할 수 있다. 함수 안에서 return 키워드가 아닌 yield를 사용하여 제너레이터를 만든다. 매번 "next()"메서드가 호출될 때마다 제너레이터는 중단된 지점부터 다시 시작합니다. 즉, return을 사용하는 함수라면, 반환될 때마다 내부 지역변수들은 사라지지만 "yield"를 사용할 경우 내부 값들이 보존됩니다.

이터레이터와 제너레이터의 차이

    yield의 사용 유무 차이도 있지만 이터레이터는 모든 동작을 완료한 후 결과를 한 번에 메모리 적재 시키는 것에 반해, 제너레이터는 각각의 yield에서 한번 실행시킨 후 대기 상태에 들어가 결과를 반환, 이후 다음 코드를 진행하여 또다시 yield를 만날 경우 대기 상태에 들어가 결과를 반환하는 방식이다.


코루틴

    코루틴(coroutine)은 각 루틴이 종속적인 관계가 아닌 대등한 관계로서, 서로를 순차적으로 호출하는 함수입니다.(비동기 프로그래밍, 병렬 처리) 코루틴은 서브 루틴을 일시 정지했다가 다시 실행할 수 있는 요소를 말한다. yield의 특징을 활용하면 구현이 가능하다.

스코프

    스코프(scope)는 어떤 변수나 객체 등이 적용될 수 있는 범위라고 보면 된다. 함수 시간에 했던 지역변수와 전역변수가 이에 해당되는 개념이다. 스코프에는 Local Scope, Enclosed Scope, Global Scope, Built-in Scope의 개념이 있다.

  • Local Scope는 특정 범위 내에서만 유효 한 변수, 함수 객체를 말한다.
  • Enclosed Scope는 외부 함수에서 선언된 변수나 함수는  내부함수에 까지 영향을 미치는 변수, 객체를 말한다..
  • Global Scope는 함수나 클래스, 객체 내부에 선언된 변수나 함수가 아닌 그 밖에 선언된 변수나 객체를 말한다. 
  • Built-in Scope는 파이썬 설치 파일 안에 바로 내장되어 있는 어떤 파이썬 파일을 작성하든지 간에 항상 포함되는 가장 광범위한 스코프라고 보면 된다

섀도우잉(Shadowing)

Local scope -> Enclosing scope -> Global Scope -> Built-in Scope

    python은 선언된 변수나 함수의 정의를 찾을 때 선언된 지점을 기준으로 가장 가까운 범위에서부터 찾게 되고 가장 가까운 범위에 있는 정의를 가장 우선시한다.


주섬주섬

    만약 파이썬을 주로 사용하게 된다면 이 내용을 알아야 면접에서 당황할 일이 줄어들 것이다.

참고

 

1. 파이썬 들어가기에 앞서

서론 시대가 발전하면서 컴퓨터에 대한 이해가 필요해졌고 자연스레 초등학생부터 대학생까지 모든 이들이 코딩에 대해 직접 혹은 간접적으로 접해보았을 것이다. 그중 대다수는 블록 코딩 혹

jinger.tistory.com

 

gc — Garbage Collector interface

This module provides an interface to the optional garbage collector. It provides the ability to disable the collector, tune the collection frequency, and set debugging options. It also provides acc...

docs.python.org

반응형

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

파이썬 turtle 정리  (2) 2024.01.05
11.파일  (0) 2023.03.13
10.예외처리  (0) 2023.03.13
9.클래스  (0) 2023.03.07
8.모듈  (0) 2023.03.02

댓글