Python tech/고급 파이썬 공부

파이썬 용어/개념 정리부터 확실하게 #2

콜레오네 2023. 3. 16. 13:54

1편에서 가비지 컬렉션, 리터럴, 객체, 아이디 등에 대해 알아보았다.

https://tech-diary.tistory.com/55

 

파이썬 용어/개념 정리부터 확실하게 #1

모든건 기초가 튼튼해야 한다. 개발자들끼리 의사소통할 때 용어에 대한 이해가 부족하면 말릴수밖에 없다 누군가가 물어볼 때, 좀 안다 싶은데 용어 설명을 못하면 난감하기도 하다 용어에 대

tech-diary.tistory.com

 

모든건 기초가 튼튼해야 한다. 개발자들끼리 의사소통할 때 용어에 대한 이해가 부족하면 말릴수밖에 없다 누군가가 물어볼 때, 좀 안다 싶은데 용어 설명을 못하면 난감하기도 하다 용어에 대

tech-diary.tistory.com](https://tech-diary.tistory.com/55)

2편도 더 알아가보자

.

해당 포스팅은 [클린코드, 이제는 파이썬이다] 저서의 일부입니다.


컨테이너, 시퀀스, 매핑 container, sequence, mapping

- 컨테이너 : 여러 타입의 객체를 모두 포함할 수 있는 객체

그리고 컨테이너의 종류 중에서

 

- 시퀀스 : '순서가 있는' 객체 ex) 리스트, 튜플, 문자열..
- len() 내장 함수릍 통해 size 구할 수 있다
- obj[index] 처럼 대괄호를 통해 인덱스 접근이 가능하다.

 

- 매핑 : 인덱스 대신 해시를 통한 '키'를 사용하는 컨테이너 ex) 딕셔너리
- 순서가 보장되지 않음 but!! 3.7버전부터는 딕셔너리도 key의 순서를 보장함

일급 객체 First class object

이름 하나 멋들어진다
도대체 일급 객체란 무엇일까?
파이썬에서 '함수'는 변수에 저장할 수 있고, 파라미터에 사용될 수 있고, 반환될 수 있는 등
거의 모든 기능을 할 수 있다.

다음을 살펴보자

>>> def hello():
...     print("my name is hello")
...     return
>>> hi = hello
>>> hi()
my name is hello

함수의 복사가 가능하다.
별칭으로도 불리는 기능이다.
함부로 막 사용하면 당연히 안되고, 이미 잘 사용되고 있는 함수의 이름을 변경할 때 유용하단다.

>>> def call_twice(func):
...     func()
...     func()
...     return
>>> call_twice(hello)
my name is hello
my name is hello

함수는 다른 함수의 파라미터로 활용될 수도 있다.
신기하다.

문 vs 표현식

  • 문 : for문 if문 return문 처럼, 무언가 결과값을 갖지 않는 명령
  • 표현식 : 변수나 리터럴을 사용하여, 특정 결과값을 가지는 명령 ex) 5 > faminlyCnt() 라던가.. val = count + 1 라던가

에러의 종류

에러는 크게 3가지로 구분될 수 있다.

  • 구문 에러 : Syntax Error라고 불리는 이것은, 파이썬에서 정한 규칙을 단순히 위배하는 것이다
    • returns 라고 사용하던가, if ~ ; 라고 쓰던가 등
  • 런타임 에러 : 불가능한 명령에 대한 에러다.
    • 존재하지 않는 파일을 참조할 때
    • 존재하징 않는 인덱스를 참조할 때 등
  • 의미 에러 : 아무 에러를 발생시키지 않는다.
    • 프로그램 실행에는 전혀 문제가 없지만
    • 논리적으로, 계획한 기능대로 움직이지 않는 코드를 말한다.
    • 직접 사람이 검증하여 잡아낼 수 밖에 없다.

파라미터 vs 인수

  • 파라미터는 함수를 '정의할 때' def 이후 괄호 사이에 들어가는 것
  • 인수 : 함수를 '호출할 때' 파라미터가 있는 자리에 넣는 value

라이브러리 / 프레임워크 / SDK / API

라이브러리 Library

  • 제 3자가 만든 코드를 전부 라이브러리라 칭할 수 있다.
  • 특정 언어에 특화되어 있으며, 라이브러리 사용자는 라이브러리 구조를 이해하지 않아도 된다.
  • 우리가 python에서 time.sleep() 함수를 쓸 때, 그 구조를 알아내지 않아도 되는 것처럼

프레임워크 Framework

  • 제어 역전 Inversion of control으로 동작하는 코드 모음
  • 프레임워크 함수를 호출 -> 프레임워크 요구에 따라 정의된 코드를 작성
  • 웹 프레임워크처럼, flask 나 django에서 직접 코드를 작성하지만 결국 프레임워크 규칙에 따라 작성하는 것처럼

SDK Software Development Kit

  • 특정 운영체제나 플랫폼 위에서 동작하는 App 작성을 돕는 라이브러리, 문서, SW 도구 등 총칭
  • iOS SDK 따위

API App Programing Interface

  • 라이브러리, 프레임워크, 엔진, SDK 등을 위한 공용 인터페이스
  • 리소스에 접근하기 위해 라이브러리 요청을 수행하는 방법을 정의해둠
  • 라이브러리 개발자는 API 문서를 제공하며, 이를 통해 다른 개발자가 특정 라이브러리의 일부 서비스를 활용할 수 있다.
반응형