⚠️ 주의: 이 글은 자바를 공부하면서 개인적으로 정리한 글입니다.
친절한 설명보다는 개념 정리 중심이니 참고용으로만 활용해주세요.
Python 설치하기
파이썬 설치하는 내용은 따로 다루지 않겠습니다.
해당 사이트를 참고해주시면 좋을 것 같습니다.
https://www.python.org/downloads/
파이썬으로 작성된 코드를 실행해 주는 프로그램을 인터프리터(Interpreter)1라고 한다.
1💬 TMI : 인터프리터(Interpreter)란?영어로 "해석기"란 의미를 가지고 있으며, 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다.
우리가 보통 쓰고 있는 컴퓨터 프로그래밍 언어는 인간이 알아보고 쓰기 쉽게 만들어진 고급 언어이다. 그렇기에 컴퓨터가 이해하고 처리 가능한 기계어라고 하는 저급 언어로 바꾸는 작업이 필요하다.
이러한 작업을 수행하는 방법 중 프로그램 언어를 해석하고 번역하는 방식에 따라 2가지로 나누는데 이를
컴파일러(Compiler)와인터프리터(Interpreter)라고 한다.
컴파일러(Compiler)
컴파일을 수행하는 프로그램을
컴파일러(compiler)라고 한다.
이 컴파일은 프로그램의 작성된 모든 코드를 한꺼번에 기계어로 바꾸어 처리하는 방식이다.
인터프리터(Interpreter)
반면,
인터프리터(Interpreter)는 프로그램 코드를 한 줄씩 번역하여 기계어로 바꾸는 작업이다.
인터프리터의 특징과 컴파일러와의 차이점
인터프리터의 가장 큰 특징이 프로그램을 한 줄씩 번역하는 과정을 거치는 것이기에, 대부분의 다른 특징에 이에 기반하여 수반된다. 인터프리터는 한 줄 명령어 단위에서 각 코드 한 줄이 {함수}인 경우가 많기에 인터프리터 언어를 "함수 언어"라 부르기도 한다.인터프리터에서 명령어 한 줄 각각이 너무 단순하기도 하지만 때론 그 한 줄의 구조가 매우 복잡하고 기능을 위한 코드가 전부 담겨있을 수 있다. 객체지향적 언어는 아니지만 그에 준하는 객체지향적 성격을 가지도록 개발될 수 있다.
컴파일러는 번역 시 바이트코드라는 목적 파일이 생성되어 컴파일이 완료되는 반면, 인터프리터는 목적 파일을 생성하지 않는다. 그렇기 때문에 추가적인 메모리 사용이 없다는 특징이 있다.
소스코드를 한줄씩 번역하기에 실행 속도 면에서는 컴파일러보다 느리지만 컴파일러보다 프로그램 수정이 간단하며, 한 줄씩 실행되기 때문에 디버깅 과정이 간단하다.
키워드(Keyword)는 파이썬에서 이미 예약되어있는 문자열로서 다른 용도로 사용이 불가능한 문자열이다.
| 키워드 | 설명 |
|---|---|
False | 불 값(False)을 나타내는 리터럴 |
None | 아무 값도 없음을 나타내는 리터럴 |
True | 참 값(True)을 나타내는 리터럴 |
and | 논리 곱(and) 연산자 |
or | 논리 합(or) 연산자 |
not | 논리 부정(not) 연산자 |
is | 동일성(identity) 비교 연산자 |
in | 포함 여부 확인 연산자 |
if | 조건문 시작 키워드 |
elif | if 다음의 추가 조건 분기 |
else | 모든 조건이 False일 때 실행되는 블록 |
for | 반복문(for-each) 시작 키워드 |
while | 조건 기반 반복문 시작 키워드 |
break | 반복문을 즉시 종료 |
continue | 반복문의 현재 반복만 건너뛰고 다음 반복으로 이동 |
def | 함수를 정의하는 키워드 |
return | 함수에서 값을 반환 |
lambda | 익명 함수를 정의하는 키워드 |
import | 모듈을 가져오는 키워드 |
from | 모듈에서 특정 이름만 가져오는 키워드 |
as | 가져온 모듈이나 예외에 별칭(alias) 지정 |
class | 클래스를 정의하는 키워드 |
try | 예외 처리 블록 시작 키워드 |
except | 예외 발생 시 처리 블록 |
finally | 예외 발생 여부와 상관없이 항상 실행되는 블록 |
raise | 예외를 강제 발생 |
with | 컨텍스트 매니저 사용 시 블록 진입/종료 관리 |
pass | 아무 동작도 하지 않는 플레이스홀더 문장 |
del | 객체 참조를 삭제 |
global | 함수 내부에서 전역 변수 사용을 선언 |
nonlocal | 중첩 함수에서 외부 함수의 변수를 사용·수정할 때 선언 |
match | 구조 분해 패턴 매칭(PEP 634) 시작 키워드 |
case | match 블록 내에서 패턴별 분기 |
식별자(identifier)는 변수, 상수, 함수, 사용자 정의 타입 등에서 다른 것들과 구분하기 위해서 사용되는 변수의 이름, 상수의 이름, 함수의 이름, 사용자 정의 타입의 이름 등 '이름'을 일반화 해서 지칭하는 용어이다.
사용자가 임의로 지정하며 이름만 보아도 뜻을 알 수 있도록 지정하는 것이 좋다.
변수나 함수명 같은 식별자(identifier)의 명칭을 작성할 때 이름을 정의하는 것도 코딩 스타일 중 일부이다. 대표적인 표기법은 다음 네 가지가 있다.
카멜 표기법 (Camel Case)
여러 단어를 연달아 사용할 때 각 단어의 첫 글자를 대문자로 적되, 맨 앞에 오는 글자는 소문자로 표기하는 것이다. 낙타의 등에 있는 혹과 같다고 하여 카멜(Camel) 표기법이라고 부른다. Java의 권장 표기법이다.
예) camelVariable, firstName, lastName …
파스칼 표기법 (Pascal Case)
단어의 모든 앞글자를 대문자로 표기하는 것이다. 카멜 표기법이 단봉낙타라면 파스칼은 쌍봉낙타라고 비유할 수 있다.
예) PascalVariable, FirstName, LastName …
헝가리안 표기법 (Hungarian Notation)
접두어에 자료형을 붙이는 표기법이다. 요즈음은 잘 사용하지 않는 스타일이다. 언어의 종류가 다양한 만큼 자료형도, 문서 데이터도 다양해졌기 때문에 접두어가 의미를 잃었다.
예) strName, bBusy, szName …
스네이크 표기법 (Snake Case)
단어 사이에 언더바를 넣어서 표기하는 방법이다. 하지만 _ 이나 __로 시작되는 식별자는 많은 언어에서 확장으로 예약되어 있는 경우가 많으므로 사용하지 않는 것이 관례이다.
대부분의 경우 카멜 표기법과 파스칼 표기법을 적절하게 조합하여, 변수명이나 함수명은 카멜 표기법을 따르고 클래스명은 파스칼 표기법을 따르는 스타일이 주를 이룬다. 전자는 Java, 후자는 C++에서 주로 볼 수 있는 스타일이다. 언어에 따라 전부 카멜 또는 전부 파스칼 표기법을 권장하기도 한다.

💬 TMI : Style Guide for Python Code코드 배치
- 들여쓰기는 공백 4칸을 권장한다.
- 한 줄은 최대 79자까지 허용한다.
- 최상위(top-level) 함수와 클래스 정의 전후에는 2줄씩 띄워 쓴다.
- 클래스 내의 메소드 정의 전후에는 1줄씩 띄워 쓴다.
표현식과 구문의 공백
다음과 같은 곳의 불필요한 공백은 피한다.
- 대괄호(
[])와 소괄호(()) 안의 공백- 쉼표(
,), 쌍점(:)과 세미콜론(;) 앞의 공백- 키워드 인자(keyword argument)와 기본값(default parameter value) 사이의
=는 붙여 쓴다.
주석
- 코드와 모순되는 주석은 없느니만 못하다. 항상 코드에 따라 갱신해야 한다.
- 불필요한 주석은 달지 않는다.
- 한 줄 주석은 신중히 단다.
이름 지정 규칙
- 변수명에서 밑줄(
_)은 위치에 따라 다음과 같은 의미를 가진다:- 한 개의 밑줄로 시작: 내부적으로 사용되는 변수 - 한 개의 밑줄로 종료: 파이썬 키워드와 충돌을 피하려고 사용 - 두 개의 밑줄로 시작: 클래스 속성으로 사용 - 두 개의 밑줄로 종료: 네임스페이스 조정용 속성- 소문자
l, 대문자O, 대문자I는 변수명으로 사용하지 않는다.- 모듈(Module) 명은 짧은 소문자로 구성하며, 필요하다면 밑줄로 나눈다.
- 모듈은 파일 시스템의 영향을 받으므로 주의한다. - C/C++ 확장 모듈은 밑줄로 시작한다.- 클래스명은 카멜케이스(CamelCase)로 작성한다.
- 내부용 클래스명은 앞에 밑줄을 붙인다. - 예외(Exception) 클래스명은 실제 에러인 경우 “Error”를 뒤에 붙인다.- 함수명은 소문자로 구성하되, 필요하면 밑줄로 구분한다.
- 대소문자 혼용은 기존 하위호환을 위해 이미 흔히 쓰이는 경우에만 허용한다.- 메소드명은 함수명과 같으나, 비공개(non-public) 메소드나 변수인 경우 앞에 밑줄을 붙인다.
- 서브 클래스 이름 충돌을 막기 위해서는 밑줄 2개를 앞에 붙인다.- 상수(Constant)는 모듈 단위에서만 정의하며, 모두 대문자로 작성하고 필요하면 밑줄로 나눈다.