00. Python 기초

Python 특징

  • 인터프리터 언어(Interpreter)

    • 소스 코드를 컴파일하지 않고, 한 줄씩 소스코드를 읽어서 바로 실행

    • 컴파일 언어에 비해 느릴 수 있지만 빌드 과정이 없이 바로 실행 가능함.

  • 객체 지향 프로그래밍(Object Oriented Programming)

    • 파이썬은 모두 객체로 이뤄져 있음.

  • 동적 타이핑(Dynamic Typing)

    • 변수에 별도의 타입 지정이 필요 없음.

Python 개발 환경

  • 대화형 환경

    • Python 기본 Interpreter

    • Python Jupyter Notebook

  • 스크립트 실행

    • .py 파일을 작성하고 IDE 혹은 Text editor 활용

  • Python Interpreter / IDLE

    • 인터프리터가 대화형 모드로 동작함

      • 프롬포트(>>>)에 코드를 작성하면 해당 코드가 실행됨.

      • 여러 줄의 코드가 작성되는 경우 보조 프롬포트(...)가 사용됨.

    • Python이 설치된 환경에서는 기본적으로 활용 가능하나 디버깅 및 코드 편집, 반복 실행이 어려움.

  • Python Jupyter Lab

    • 웹 브라우저 환경에서 코드를 작성할 수 있는 오픈소스

      • Syntax Highlighting, Indentation, Tab completion 등 편의기능 제공함.

      • 브라우저에서 코드를 실행하고 결과를 확인할 수 있음

      • HTML, LaTex, PNG, SVG을 바탕으로 다양한 표현이 가능함.

      • Markdown을 기반으로 문서를 작성할 수 있음.

기초 문법 (Syntax)

코드 스타일 가이드

코드를 ‘어떻게 작성할지’에 대한 가이드라인

주석

주석 (Comment)

한 줄 주석#으로 표현합니다.

여러 줄의 주석

  1. 한 줄 씩 #을 사용해서 표현하거나,

  2. """ 또는 ''' (여러줄 문자열, multiline string)으로 표현할 수 있습니다. (multiline은 주로 함수/클래스를 설명 (docstring)하기 위해 활용됩니다.)

# 한줄 주석
    
# print('hello') # 이 줄은 실행되지 않습니다.
print('world')
world
# 여러줄 주석 (multiline string)

"""
이것은
여러줄에 걸친
주석을 만드는 코드입니다.
"""
print('world')
world
def foo():
    '''이 함수는 foo입니다.
    docstring으로 함수나 클래스의 기능을 설명합니다.'''

print(foo.__doc__)
이 함수는 foo입니다.
    docstring으로 함수나 클래스의 기능을 설명합니다.

코드 라인

파이썬 코드는 ‘1줄에 1문장(statment)’이 원칙입니다.

문장(statement)은 파이썬이 실행 가능(executable)한 최소한의 코드 단위입니다.

Note

  • 기본적으로 파이썬에서는 ;을 작성하지 않습니다.

  • 한 줄로 표기할때는 ;을 작성하여 표기할 수 있습니다.

# print문을 두 번 쓸 경우

print('hello')
print('world') 
hello
world
# print문 2개를 한 줄로 이어서 작성할 경우

print('hello')print('world')
  File "C:\Users\User\AppData\Local\Temp/ipykernel_28272/2492589894.py", line 4
    print('hello')print('world')
                  ^
SyntaxError: invalid syntax
# ;을 통해 코드를 구분시켜 오류 해결

print('hello'); print('world')

# 하지만 위와 같이 한줄에 두 개 이상의 코드를 작성하는 작성법은 잘 쓰지 않습니다.
hello
world

줄을 여러줄 작성할 때는 역슬래시\를 사용하여 아래와 같이 할 수 있다.

# print문을 통해 하나의 문자열을 두 줄로 작성하여 실행해봅시다. 
# 아래의 코드를 실행시켜 오류 메시지를 확인해봅시다.

print('hello
world')
  File "C:\Users\User\AppData\Local\Temp/ipykernel_28272/2393845461.py", line 4
    print('hello
                ^
SyntaxError: EOL while scanning string literal
# print문을 통해 실행되는 코드 예시 작성해봅시다.
# hello 뒤에 \를 붙이고 다시 코드를 실행해봅시다.

print('hello\
world')
helloworld
# PEP-8 가이드에 따르면 여러줄 문자열은 아래와 같이 쓰는 게 관례(convention)입니다.

print("""hello
world""")
hello
world

[] {} ()\ 없이도 가능합니다.

# 대괄호를 사용한 list를 만들어봅시다.
# list 대괄호 안에는 '짜장면', '짬뽕', '탕수육','군만두', '물만두', '왕만두'를 두 줄로 채워넣어 봅시다.
# 닫히는 대괄호의 위치 
# (1). 첫번째 요소(짜장면)의 시작 위치
lunch1 = [
    '짜장면', '짬뽕', '탕수육',
    '군만두', '물만두', '왕만두',
    ] 
# (2) 생성자(lunch2)가 시작되는 위치
lunch2 = [
    '짜장면', '짬뽕', '탕수육',
    '군만두', '물만두', '왕만두',
]

Note

PEP-8 가이드에 따르면, list 가 여러 줄로 작성될 때 닫히는 대괄호의 위치는

  1. 첫번째 문자(요소) 위치에 오거나

  2. 마지막 줄에서 생성자가 시작되는 첫번째 열에 위치합니다.

다른 (소, 중)괄호도 동일한 컨벤션을 따릅니다.