• 변수(variable)
- 변수를 사용하여 데이터를 저장하고 처리한다.
- 변수는 데이터를 저장하기 위한 메모리 공간이며, 프로그램에서는 이 변수에 할당된 값에 따라 다른 연산을 수행할 수 있다.
- 변수 이름은 숫자로 시작할 수 없으며, 예약어로 지정된 단어는 변수 이름으로 사용할 수 없다.
- 파이썬은 동적 타이핑을 지원하는 프로그래밍 언어이다.(변수를 선언할 때 해당 변수에 어떤 데이터 타입을 저장할 것인지 미리 정하지 않고, 변수가 실제로 사용될 때 그때서야 변수의 데이터 타입을 결정하는 방식이다.
• 문자열(string)
- 문자열은 " " 혹은 ' ' 로 묶인 문자의 시퀀스이다. -> 문자열의 인덱싱, 슬라이싱, 메서드, 포맷팅
- split()과 join()은 문자열을 분리하고 합치는 함수이다.
> split() : 문자열을 구분자로 분리하여 리스트로 반환한다.
> join() : 리스트의 각 요소를 구분자로 결합하여 문자열로 반환한다.
• 연산자
- 산술, 할당, 비교, 논리, 비트 연산자 등이 있다.
• 파이썬 자료 구조
- 리스트(list)
파이썬에서 리스트는 여러 값을 담을 수 있는 데이터 구조, 값들의 목록으로 각 값들을 쉼표로 구분되며 대괄호로 둘러싼다.
리스트는 값들의 추가, 수정, 삭제 등 다양한 조작이 가능하다.
- 튜플(tuple)
파이썬에서 튜플은 값의 순서가 정해져 있고 변경할 수 없는 자료형이다.
튜플은 리스트와 비슷하지만, 소괄호나 아무 기호 없이 값들을 쉼표로 구분한다.
- 딕셔너리, 집합
딕셔너리는 키-값(key-value) 쌍으로 이루어진 자료 구조이며, 각 키는 값에 대응된다. 또한 키를 사용하여 값을 검색할 수 있다.
딕셔너리는 중괄호를 사용한다.
집합은 유일한 값을 담는 자료 구조이며 중괄호를 사용한다.
- 스택(stack)
스택은 데이터를 일시적으로 저장하는 자료구조이다.
후입선출의 원리에 따라 데이터를 저장하고 꺼내는 구조를 가지고 있다.
스택은 주로 함수의 호출과 반환, 컴파일러의 구문 분석, 웹 브라우저의 이력 기능 등 분야에서 사용한다.
파이썬에서 스택을 구현하는데 있어서 리스트를 사용할 수 있으며 append() 메서드를 사용해서 데이터를 스택에 삽입하고, pop() 메서드를 사용하여 데이터를 꺼낼 수 있다.
- 큐(queue)
큐는 데이터를 일시적으로 저장하는 자료구조이다.
선입선출의 원리에 따라 데이터를 저장하고 꺼내는 구조를 가지고 있다.
큐는 주로 네트워크 패킷, 메시지 전송, 프로세스 관리 등 분야에서 사용한다.
큐를 구현하는데 있어서 deque 모듈을 사용할 수 있으며 데이터를 삽입하고 삭제할 수 있는 덱 자료구조를 제공한다.
• 제어문
- bool, 논리 연산자
bool 자료형은 참(true)과 거짓(False)을 나타내는 자료형이다.
숫자 0, 빈 문자열, 빈리스트 등은 False로, 그 외의 값들은 True로 변환된다.
논리 연산자로 and, or, not이 있다.
- 조건문 if
if문은 조건식의 참/거짓에 따라 코드 블록을 실행하거나 실행하지 않도록 한다.
- 반복문 while, for
while문은 참인 동안 반복적으로 코드 블록을 실행한다.
for문은 반복 가능한 객체의 요소들을 하나씩 순회하면서 코드 블록을 실행한다.
∙함수
파이썬에서 함수는 코드를 모듈화 하고 재사용성을 높이는데 중요한 역할을 한다. 함수를 사용하면 코드를 더 깔끔하고 효율적으로 작성이 가능하다.
- Call By Value, Call By Reference
Call By Value방식은 함수 호출 시, 값을 복사하여 전달하는 방식으로 함수 내에서 매개변수 값이 변경되어도 원래 변수의 값은 바뀌지 않는다. 이는 변수가 저장되는 메모리 주소를 전달하는 것이 아니라 변수에 저장된 값 자체를 전달하기 때문이다.
Call By Reference방식은 함수 호출 시, 변수가 저장되어 있는 메모리 주소를 전달하는 방식으로 함수 내에서 매개변수 값을 변경하면 원래 변수의 값도 함께 변경이 된다.
파이썬은 기본적으로 모든 인자 전달 방식이 Call by object reference이고 이는 값이 아니라 객체에 대한 레퍼런스를 전달하는 의미이다.
함수 내에서 매개변수에 새로운 객체를 할당하면 전달된 객체의 값이 변경되지 않지만, 객체가 변겨 가능한 경우에는 함수 내에서 객체를 수정하면 전달된 객체의 값도 함께 변경이 된다.
- Variable-length asterisk(*args, **kwargs)
파이썬에서는 함수의 인자로서 *args와 **kwargs를 사용하여 가변 인자를 처리할 수 있다.
*args는 입력값이 몇 개가 될지 모를 때 사용하며 함수의 인자로 받은 arguments를 튜플로 처리한다.
**kwargs는 키워드 인자를 의미하며 함수의 인자로 받은 키워드 인자를 딕셔너리로 처리한다.
- asterisk - unpaking a container
파이썬에서 asterisk를 이용한 unpackingdms iterable 한 container(리스트, 튜플, 집합, 딕셔너리 등)의 원소를 개별적인 인자로 unpacking 하여 함수의 인자로 전달하거나 변수에 할당할 때 유용하게 사용된다.
- 파일 입출력
파일은 크게 text.txt과 binary file로 구분된다.
파이썬에서 open() 함수를 사용하여 파일을 열고 read(), write() 등의 메서드를 사용하여 파일을 읽고 쓸 수 있다.
> r : 파일을 읽기 모드로 연다 (파일이 존재하지 않으면 예외가 발생한다)
> w : 파일을 쓰기 모드로 연다 (파일이 존재하지 않으면 새 파일이 생성된다)
> a : 파일을 추가 모드로 연다 (파일이 존재하지 않으면 새 파일이 생성된다)
> x : 파일을 쓰기 모드로 연다 (파일이 이미 존재하면 예외가 발생한다)
> b : 이진 모드로 파일을 연다
> t :텍스트 모드로 파일을 연다 (기본값)
∙ 클래스와 객체
- 모듈
파이썬에서 다른 파이썬 파일을 import 하여 해당 파일에 정의된 모듈, 함수, 클래스 등을 사용하여 코드의 재사용성을 높일 수 있다.
- 패키지
파이썬에서 패키지는 모듈의 집합을 의미하며 모듈을 논리적으로 묶어서 관리할 수 있게 해 준다.
- 클래스와 객체
클래스는 객체의 설계도와 같은 개념으로 객체를 생성하기 위한 템플릿이라고 볼 수 있다. 즉 객체를 생성하기 위해 필요한 인스턴스를 생성하는 데 사용된다고 볼 수 있다.
객체는 속성과 행동을 가지는 데이터 구조체를 말한다. 객체는 속성과 행동을 가지는데 속성은 변수로 행동은 함수로 표현된다.
- 상속, 오버라이딩
상속은 기존의 클래스를 재사용하여 새로운 클래스를 만드는 방법이다. 상속받은 클래스는 기존 클래스의 변수와 메서드를 모두 상속받으며 추가적으로 변수와 메서드를 정의할 수 있다.
- 다형성
다형성은 같은 이름의 메서드를 다른 방식으로 구현할 수 있는 기능이다.
다형성을 이용하면 같은 이름의 메서드를 호출할 때 객체의 타입에 따라 다르게 동작하도록 구현할 수 있다.
- 캡슐화
객체 지향 프로그래밍에서는 캡슐화와 정보 은닉을 지원한다. 캡슐화는 관련 있는 데이터와 메서드를 하나로 묶어서 외부에서 접근할 수 없도록 하는 것을 의미한다. 이를 통해 데이터와 메서드를 함께 관리하면서도 외부에서는 접근하지 못하게 함으로써 데이터의 안전성을 보장할 수 있다.
정보 은닉은 캡슐화를 통해 숨겨진 데이터를 접근할 수 없도록 하는 것을 의미한다.
- 예외 처리
예외 상황에 대한 적절한 처리를 예외 처리라고 하며 프로그램의 안정성을 높이고 오류 발생 시 그것이 큰 문제로 이어지는 것을 막는 역할을 한다.
- 데코레이터
함수를 수정하지 않고 기능을 추가할 수 있는 기능이다.
- Inner Function, Closures
Inner Function은 함수 내부에 정의된 함수를 말하며 함수 내에서만 사용된다.(외부에서는 사용할 수 없다)
주로 코드의 중복을 제거하고 가독성을 높이기 위해 사용한다.
Closures는 Inner Function이 가지고 있는 지역 변수의 상태를 기억하고 저장하는 기능을 한다.
이러한 기능을 이용하여 함수의 상태를 유지하고 함수 외부에서 함수 내부의 지역 변수에 접근할 수 있다.
'S-DEV > 파이썬' 카테고리의 다른 글
홈페이지 구축 (Flask) (0) | 2023.10.19 |
---|---|
최소한의 기능 앱 만들기 (0) | 2023.09.30 |
플라스크 환경 구축 (0) | 2023.09.30 |
정규화 표현식 (0) | 2023.07.20 |