
os — Miscellaneous operating system interfaces
자세한 내용은 이 블로그 글 읽어보기

double average = library.calculate(scores);| 흐름 소유 | 예시 | |
|---|---|---|
| 프레임워크 | 전체적인 흐름을 자체적으로 지님 | 집 |
| 라이브러리 | 프로그래머가 전체적인 흐름을 지님 | 가구 |
재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 Class나 Function으로 만들어진 것
사용 여부는 코드 작성자 선택 사항이며 새로운 라이브러리 제작 시에도 엄격한 규칙이 존재하지 않아 제작 의도에 맞게 작성하면 됨
- 가장 유명한 자바스크립트 라이브러리는 jQuery임
- 그래픽 사용자 인터페이스(Graphical user interface , GUI)에서 재사용하기 쉽게 버튼, 테이블 같은 구성 요소를 호출해서 쓸수 있도록 분리해두었다면 라이브러리임
- Windows에서 간혹 보았을 dll 확장자는 동적 링크 라이브러리(dynamic-link library, DLL)의 약자로 라이브러리라고 할수 있음
- 객체지향 프로그래밍(object-oriented programming, OOP)은 기본적으로 각 기능마다 함수화하는 것 → 클래스 라이브러리라고 할 수 있음
원하는 기능 구현에만 집중하여 빠르게 개발 할 수 있도록 기본적으로 필요한 기능을 갖추고 있는 것
위에서 설명한 라이브러리가 포함되어 있음
겉보기에는 비슷하지만 많은 프레임워크가 존재하는 이유는 아래에서 설명하게 될 아키텍처가 다른 것이며 규칙을 준수해야 되는 이유이기도 함
- Java 개발자라면 Spring!
- Python 개발자라면 Django!
- JavaScript 개발자라면 Angularjs!
- PHP 개발자라면 Laravel!
기획한 내용을 프로그램화했을 경우 필요한 주요 특징을 기술적으로 설계하고 명시하는 것
결과물에 필요한 모든 구성 요소를 명시하지만, 구체적인 구현 방법은 포함되어 있지 않음
(플랫폼은 주요 특징이지만 프레임워크와 라이브러리는 주요 특징이 아니므로 명시되지 않을 가능성이 큼)
자동차 설계로 예를 들면 자동차 헤드라이트가 본넷 밑에 사각형 모양으로 존재한다고 설계하고 헤드라이트 고정 방식이 접착제인지, 볼트인지는 명시되지 않는다고 볼 수 있음(하지만 상황에 따라 포함될 수도)
프로그램이 실행되는 환경
플랫폼 위에 다른 플랫폼이 존재할 수 있음
(Windows에서 Java로 개발, 앱스토어에서 어플을 내려받는 과정 → 이미 3개의 플랫폼을 사용하고 있는 것)
플랫폼은 같은 영역에도 다양한 목적과 가치로 많이 만들어지고 있으며 모든 플랫폼에서 실행되도록 개발하기는 어려움: 프로그램의 목적에 맞도록 플랫폼을 선택하는 것이 중요함
- Windows, Linux, macOS등 O/S는 모두 플랫폼
- 어플을 다운받는 앱스토어, 구글플레이, 원스토어도 플랫폼
- V8 JavaScript Engine: JavaScript에게 큰 힘이 되어주고 있는 플랫폼
- Java 프로그램은 OS제약이 없지만 실행하기 위해서는 해당 OS에 자바 가상 머신(Java Virtual Machine, JVM)위에서 실행되므로 Java 플랫폼이 필요
.을 찍어 사용)def get_square_num(n):
return n * 2
print(get_square_num(3))
class MathTest():
def get_square_num(self, num):
return num * 2
test = MathTest()
print(test.get_square_num(3))
모듈과 라이브러리
라이브러리는 모듈과 비슷한(거의 같은) 개념이다.
라이브러리는 여러 모듈을 포함하는 더 큰 개념
모듈은 단일 파일에 담긴 코드 단위이고, 라이브러리는 여러 모듈이나 패키지를 포함하여 특정 기능을 제공하는 코드 집합
즉, 모듈이 모여 라이브러리를 구성한다고 볼 수 있음
- 생활 코딩에서 설명하는 차이점
- 모듈이 프로그램을 구성하는 작은 부품의 느낌이라면, 라이브러리는 자주 사용 되는 로직을 잘 정리한 집합 느낌이다.
- 위키독스 '문과생도 할 수 있는 파이썬 업무':
- 모듈은 하나의 파이썬 파일, 패키지는 여러 모듈들을 구조적으로 관리하는 방법, 그리고 라이브러리는 특정 기능을 제공하기 위한 코드의 집합(모듈 또는 패키지)
- 위키백과에서는 라이브러리를 다음과 같이 설명:
- 컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임으로 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.
import 키워드를 사용해 다른 파일에서 정의된 함수와 변수를 가져올 수 있음import math
print(math.sqrt(16)) # 출력: 4.0
from ... import ... 구문을 사용하면 모듈에서 특정 함수나 변수만 가져올 수 있음from math import sqrt
print(sqrt(16)) # 출력: 4.0
as 키워드를 사용해 모듈 이름을 다른 이름으로 변경할 수 있음import math as m
print(m.sqrt(16)) # 출력: 4.0
from ... import * 구문을 사용해 모듈 내 모든 함수나 변수를 가져올 수 있음from math import *
print(sqrt(16)) # 출력: 4.0
print(pi) # 출력: 3.141592653589793
math_utils.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
main.py
import math_utils
print(math_utils.add(3, 5)) # 출력: 8
print(math_utils.multiply(4, 6)) # 출력: 24
lambda 매개변수1, 매개변수2, ... : 표현식
lambda: 람다 함수를 선언하는 키워드매개변수: 입력 값(여러 개 가능)표현식: 연산 결과를 반환(return 사용 불가)def add(x, y):
return x + y
print(add(3, 4)) # 출력: 7
add = lambda x,y: x+y
print(add(3,4))

def 키워드를 사용한 일반 함수는 여러 줄을 사용할 수 있지만, lambda 함수는 한 줄로 간단히 표현할 수 있음add = lambda a, b: a + b
print(add(10, 20))
lambda a, b: a + b를 add 변수에 저장add(10, 20)을 호출하면 30 출력print((lambda x, y: x * y)(3, 5))
lambda x, y: x + y와 같이 람다 함수를 정의하고 (3, 5) 값을 즉시 전달하여 실행3 * 5 = 15가 출력됨map(함수, 함수에 쓸 연속 자료형)을 사용해 리스트의 모든 요소를 람다 함수로 처리 가능numbers = [1, 2, 3, 4, 5,]
squared = list(map(lambda x: x**2, numbers))
print(squared)
[표현식 for 변수 in 반복할_리스트]
표현식: 리스트의 요소를 어떻게 변환할지 지정for 변수 in 반복할_리스트: 기존 리스트를 순회하면서 요소를 가져옴for문 방식numbers = [1, 2, 3, 4, 5,]
squared = []
for num in numbers:
squared.append(num**2)
print(squared)
numbers = [1, 2, 3, 4, 5,]
squared = [num ** 2 for num in numbers]
print(squared)
→ 리스트 컴프리헨션을 사용하면 코드가 더 짧아지고 직관적임
if문 활용)numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,]
even_numbers = [num for num in numbers if num % 2 == 0]
print(even_numbers)