초보자를 위한 Python 프로그래밍 기초 가이드

Photo of author
admin

들어가며

Python은 초보자에게 매우 친숙한 프로그래밍 언어입니다. 문법이 간단하고 가독성이 좋아서 프로그래밍을 처음 배우는 분들에게 인기가 높죠. 이 가이드에서는 Python 프로그래밍의 기초를 차근차근 배워나갈 것입니다. 함께 시작해볼까요?

파이썬 설치하기

프로그래밍을 시작하려면 먼저 Python을 설치해야 합니다. 파이썬 공식 웹사이트(https://www.python.org)에 접속하여 최신 버전을 다운로드하세요. 운영체제에 맞는 버전을 선택하고 안내에 따라 설치를 진행하면 됩니다.

설치가 완료되면 명령 프롬프트나 터미널에서 python --version을 입력해 설치가 잘 되었는지 확인해볼 수 있습니다. 버전 정보가 출력된다면 성공적으로 설치된 겁니다.

Python 개발 환경 설정하기

Python은 기본적으로 IDLE(Integrated Development and Learning Environment)라는 통합 개발 환경을 제공합니다. 하지만 초보자들에게는 PyCharm과 같은 전문적인 IDE(Integrated Development Environment)를 권장합니다. PyCharm은 강력한 기능과 직관적인 인터페이스를 갖추고 있어 효율적인 코딩이 가능합니다.

PyCharm을 설치하려면 공식 웹사이트(https://www.jetbrains.com/pycharm/)에서 다운로드 받으면 됩니다. 커뮤니티 버전은 무료로 제공되고 있으니 처음에는 이 버전부터 사용해보는 것이 좋겠습니다.

설치가 완료되면 PyCharm을 실행해봅시다. 새 프로젝트를 만들고 원하는 코드 에디터를 선택하면 프로그래밍을 시작할 준비가 된 겁니다.

Python 기본 문법 익히기

주석과 출력문

 # 이것은 한 줄 주석입니다. 프로그램에 영향을 주지 않습니다.
 """
 이것은
 여러 줄 주석입니다.
 """
 print("Hello, Python!") # 문자열 출력하기

주석은 코드에 대한 설명을 작성할 때 사용합니다. 한 줄 주석은 # 기호를, 여러 줄 주석은 """ """를 사용하면 됩니다. 주석은 프로그램에 영향을 미치지 않고 가독성을 높여줍니다.

print() 함수는 텍스트를 화면에 출력할 때 사용합니다. 괄호 안에 문자열을 넣으면 해당 문자열이 출력됩니다.

변수와 자료형

 age = 25 # 정수형 
 weight = 65.7 # 실수형
 name = "John" # 문자열
 isStudent = True # 논리형

변수는 데이터를 저장할 수 있는 메모리 공간입니다. Python에서는 변수를 선언할 때 자료형을 지정할 필요가 없습니다. 할당된 값에 따라 자료형이 결정되는데, 위 예시에서는 정수, 실수, 문자열, 불린 자료형으로 선언되었습니다.

Python의 기본 자료형은 정수, 실수, 문자열, 불린, 리스트, 튜플, 딕셔너리, 세트 등이 있습니다. 이들 자료형의 특성을 잘 익혀두면 프로그래밍에 많은 도움이 됩니다.

연산자

 x = 5 
 y = 3
 print(x + y) # 8
 print(x - y) # 2
 print(x * y) # 15  
 print(x / y) # 1.6666666666666667
 print(x % y) # 2 (나머지)
 print(x ** y) # 125 (제곱)

Python에서는 기본 사칙연산은 물론 다양한 연산자를 제공합니다. +, -, *, /는 각각 덧셈, 뺄셈, 곱셈, 나눗셈 연산자입니다. %는 나머지를, **는 거듭제곱을 계산합니다.

연산자 우선순위도 가르치는 것이 좋겠습니다. 괄호 > 지수 > 단항 > 곱셈/나눗셈 > 덧셈/뺄셈 순으로 우선순위가 높습니다.

문자열 조작하기

 lang = "Python"
 print(lang[0]) # P
 print(lang[-1]) # n
 ​
 full_name = "John Doe"
 print(full_name.split()) # ['John', 'Doe']
 ​
 hello = "Hello, world!"
 print(hello.replace("world", "Python")) # Hello, Python!

문자열은 프로그래밍에서 자주 사용되므로 잘 다룰 수 있어야 합니다. 인덱싱을 통해 특정 문자에 접근할 수 있고, 메서드를 활용하면 문자열을 쉽게 조작할 수 있습니다.

split() 메서드는 문자열을 구분자 기준으로 나눈 뒤 리스트로 반환합니다. replace() 메서드는 문자열 내 특정 값을 다른 값으로 교체합니다. 이외에도 strip(), upper(), lower() 등 다양한 메서드가 있으니 문서를 참고하면서 익혀보세요.

제어문 배우기

조건문

 number = 10
 if number > 0:
     print("양수입니다.")
 elif number < 0:  
     print("음수입니다.")
 else:
     print("0입니다.")

조건문은 특정 조건을 판단하여 다른 실행 경로를 结정합니다. if문은 조건식이 참일 때 코드 블록을 실행하고, elif문은 여러 조건 중 하나라도 만족하면 해당 블록을 실행합니다. 모든 조건이 거짓이면 else 블록이 실행됩니다.

조건식에는 비교 연산자(<, >, <=, >=, ==, !=)와 논리 연산자(and, or, not)를 사용할 수 있습니다. 이를 잘 활용하면 복잡한 조건도 쉽게 처리할 수 있죠.

반복문

 # for 반복문
 fruits = ["사과", "바나나", "Cherry"]
 for fruit in fruits:
     print(fruit)
 ​
 # while 반복문
 i = 1
 while i <= 5:
     print(i)
     i += 1

반복문은 특정 조건이 만족할 때까지 코드 블록을 반복 실행합니다. for 반복문은 리스트, 문자열, 딕셔너리 등 순회 가능한 객체에 대해 반복합니다. while 반복문은 조건식이 참인 동안 계속 반복됩니다.

break문을 사용하면 반복문을 중간에 빠져나올 수 있고, continue문은 해당 반복을 건너뛰고 다음 반복으로 넘어갑니다.

반복문은 프로그래밍에서 빈번히 사용되므로 다양한 사례를 통해 연습하는 것이 중요합니다.

함수 만들기

 def greet(name):
     """
    인사 메시지를 출력하는 함수입니다.
    """
     print(f"안녕하세요, {name}님!")
 ​
 greet("John") # 안녕하세요, John님!

함수는 특정 작업을 수행하는 코드 블록입니다. def 키워드 다음에 함수 이름을 지정하고, 괄호 안에 매개변수를 선언합니다. 실제 기능은 코드 블록 내부에 작성합니다.

함수를 호출하려면 이름과 인자를 괄호 안에 전달하면 됩니다. 위 예제에서 greet("John")을 호출하면 "안녕하세요, John님!"이 출력됩니다.

함수는 코드 재사용성을 높이고 가독성을 향상시킵니다. 또한 함수에 반환값을 지정하면 결과값을 다른 곳에서 활용할 수도 있죠.

람다 함수

 add = lambda x, y: x + y
 print(add(3, 5)) # 8

람다 함수는 익명 함수로, lambda 키워드를 사용해 매개변수와 반환 값으로만 구성됩니다. 코드가 간결해지고 가독성이 좋아지는 장점이 있습니다. 하지만 복잡한 로직은 일반 함수를 사용하는 것이 좋습니다.

자료 구조 다루기

리스트

 fruits = ["사과", "바나나", "Cherry"]
 print(fruits[0]) # 사과
 ​
 numbers = [3, 1, 4, 5]
 numbers.sort() # 리스트 정렬
 print(numbers) # [1, 3, 4, 5]

리스트는 순서가 있는 객체의 집합입니다. 대괄호 []로 생성하고, 인덱스를 통해 요소에 접근할 수 있습니다. 요소를 추가하거나 제거할 수도 있고, sort() 메서드로 정렬할 수 있습니다.

튜플

 point = (3, 5)
 print(point[0]) # 3

튜플은 리스트와 비슷하지만 원소 값을 변경할 수 없습니다. 소괄호 ()로 생성하고 인덱싱을 통해 값에 접근합니다. 불변성 때문에 리스트보다 적은 메모리를 차지하며 스레드 안전성도 보장됩니다.

딕셔너리

 person = {"name": "John", "age": 30, "city": "Seoul"}
 print(person["name"]) # John
 ​
 person["email"] = "[email protected]" # 키-값 쌍 추가
 print(person) # {'name': 'John', 'age': 30, 'city': 'Seoul', 'email': '[email protected]'}

딕셔너리는 키-값 쌍의 집합으로, 중괄호 {}로 생성합니다. 키를 통해 값에 접근하며, 새로운 키-값 쌍을 추가하거나 기존 값을 수정할 수 있습니다.

세트

 fruits = {"사과", "바나나", "체리"}
 print("바나나" in fruits) # True
 ​
 numbers = {1, 2, 3, 3, 3}
 print(numbers) # {1, 2, 3}

세트는 중복을 허용하지 않는 자료 구조입니다. 중괄호 {}로 생성하지만, 딕셔너리와는 달리 키-값 쌍 형태가 아닙니다. 집합 연산을 수행할 수 있어 자료 처리에 유용합니다.

프로그래밍에서는 다양한 자료 구조를 적절히 활용하는 것이 중요합니다. 상황에 맞는 자료 구조를 선택하면 메모리를 효율적으로 관리하고 성능도 향상시킬 수 있습니다.

객체지향 프로그래밍 이해하기

 class Dog:
     def __init__(self, name, age):
         self.name = name
         self.age = age
 ​
     def bark(self):
         print(f"{self.name}가 멍멍!")
 ​
 dog1 = Dog("해피", 3)
 print(dog1.name) # 해피
 dog1.bark() # 해피가 멍멍!

Python에서는 객체지향 프로그래밍(OOP) 패러다임을 제공합니다. 클래스를 통해 객체를 정의하고, 객체의 속성과 메서드를 정의할 수 있습니다.

__init__ 메서드는 객체 생성 시 호출되는 특수한 메서드로, 객체 초기화에 사용됩니다. self는 현재 인스턴스를 가리키는 참조자입니다.

상속

 class Animal:
     def __init__(self, name):
         self.name = name
     
     def speak(self):
         print(f"{self.name} 소리 내기")
 ​
 class Dog(Animal):
     def speak(self):
         print(f"{self.name} 멍멍!")
 ​
 class Cat(Animal):
     def speak(self):
         print(f"{self.name} 야옹!")
 ​
 dog = Dog("해피")
 dog.speak() # 해피 멍멍!
 ​
 cat = Cat("나비")
 cat.speak() # 나비 야옹!

상속은 기존 클래스의 속성과 메서드를 물려받아 새로운 클래스를 정의하는 것입니다. 코드 재사용성이 높아지고 유지보수가 용이해집니다.

위 예제에서 DogCat 클래스는 Animal 클래스를 상속받습니다. 하위 클래스는 상위 클래스의 속성과 메서드를 모두 사용할 수 있습니다. 또한 speak() 메서드를 오버라이딩하여 각 동물 소리를 구현했습니다.

다형성

 animal_list = [Dog("해피"), Cat("나비")]
 ​
 for animal in animal_list:
     animal.speak()

다형성은 같은 메서드 이름을 사용하더라도 서로 다른 기능을 할 수 있는 객체지향 원리입니다.

위 예제에서 각 객체의 speak() 메서드는 서로 다른 기능을 수행하지만, 리스트에 담겨있는 모든 객체에 대해 동일한 메서드를 호출할 수 있습니다. 이처럼 다형성을 활용하면 코드를 좀 더 간결하고 유연하게 작성할 수 있습니다.

객체지향 프로그래밍은 코드의 재사용성과 유지보수성을 높여주기 때문에 대규모 프로젝트에서 많이 사용됩니다. 이 개념을 잘 익히면 Python으로 보다 효율적이고 견고한 프로그램을 개발할 수 있습니다.

모듈과 패키지 이해하기

Python에서는 모듈과 패키지를 통해 코드를 구조화하고 재사용할 수 있습니다.

모듈

 # math_util.py
 def add(a, b):
     return a + b
 ​
 def multiply(a, b):
     return a * b
 # main.py 
 import math_util
 ​
 result = math_util.add(3, 5)
 print(result) # 8

모듈은 함수, 클래스, 변수 등을 담고 있는 .py 파일입니다. 다른 파일에서 import 키워드를 사용하면 모듈의 기능을 가져와 사용할 수 있습니다.

패키지

 mypackage/
    __init__.py
    module1.py
    module2.py
 # module1.py
 def foo():
     print("foo() in module1")
 # main.py
 from mypackage import module1
 ​
 module1.foo()

패키지는 모듈들의 집합체입니다. 점(.)을 활용해 계층적으로 구성할 수 있어 큰 프로젝트의 구조를 잡는 데 유용합니다. 패키지 디렉터리에 __init__.py 파일이 있어야 합니다.

이렇게 모듈과 패키지를 잘 활용하면 코드의 가독성과 재사용성, 유지보수성이 높아집니다. 또한 다른 사람이 작성한 패키지나 모듈을 임포트해 사용할 수도 있습니다.

Python으로 할 수 있는 일

Python은 범용 프로그래밍 언어라서 다양한 분야에서 사용할 수 있습니다.

웹 개발

Flask와 Django는 Python 기반의 웹 프레임워크입니다. 이들 프레임워크를 사용하면 손쉽게 웹 애플리케이션과 API를 개발할 수 있습니다.

데이터 분석

Pandas, NumPy, Matplotlib 등의 라이브러리를 활용하면 데이터 처리, 분석, 시각화 작업을 수행할 수 있습니다. Python은 데이터 과학 분야에서 가장 많이 사용되는 언어 중 하나입니다.

자동화 스크립트

Python은 다양한 운영 체제에서 동작하고 문법이 간결해서 자동화 스크립트를 작성하기에 적합합니다. 예를 들어 파일 처리, 웹 스크래핑, 작업 스케줄링 등을 자동화할 수 있습니다.

기계 학습 / 인공지능

TensorFlow, PyTorch와 같은 라이브러리를 통해 머신러닝과 딥러닝 모델을 구축할 수 있습니다. 최근에는 인공지능 분야에서 Python의 인기가 높아지고 있습니다.

데스크탑 GUI 개발

PyQt, Tkinter 등의 라이브러리를 사용하면 데스크탑 GUI 애플리케이션을 만들 수 있습니다. 단순한 도구부터 복잡한 소프트웨어까지 다양한 프로그램을 개발할 수 있죠.

Python은 이처럼 광범위한 분야에서 활용되고 있습니다. 앞으로 더 많은 라이브러리와 프레임워크가 등장하면서 적용 범위도 확대될 것입니다. Python 기초를 착실히 다진다면 여러 분야로 진출할 수 있는 기회가 열릴 것입니다.

마치며

지금까지 Python 프로그래밍의 기본 문법과 주요 개념을 살펴보았습니다. 처음 프로그래밍을 접하는 분들에게는 다소 어려웠을 수도 있겠지만, 계속해서 연습하다 보면 금방 실력이 향상될 것입니다.

프로그래밍을 배우는 과정에서 가장 중요한 것은 꾸준히 코딩하는 습관을 기르는 것입니다. 책이나 강의를 통해 이론을 배우는 것도 좋지만, 실제로 직접 코드를 작성해보는 실습이 필수입니다. 간단한 프로그램부터 시작해서 점차 복잡도를 높여가면서 연습하는 게 좋습니다.

또한 Python 커뮤니티에 참여해 질문하고 토론하는 것도 도움이 됩니다. 많은 개발자들이 온라인에서 활동하고 있으므로 궁금한 점이 있다면 주저없이 질문하세요. 타인의 코드를 분석하고 피드백을 받는 것도 실력 향상에 큰 도움이 됩니다.

프로그래밍은 처음에는 어렵고 막막할 수 있지만, 꾸준히 노력한다면 누구나 실력을 기를 수 있습니다. 앞으로도 계속해서 도전하고 성장해나가기를 바랍니다. 화이팅!

Editor:

admin