21 3월 2025
파이썬은 다재다능하고 널리 사용되는 프로그래밍 언어로, 명확한 구문과 가독성으로 유명합니다. 웹 개발부터 데이터 과학에 이르기까지 모든 분야에서 사용되므로 초보자에게 이상적인 선택이며, 다양한 진로를 열어줍니다. 이 기사에서는 간단하고 이해하기 쉬운 코드 예제를 통해 기본적인 파이썬 개념을 안내합니다.
전통적인 “Hello, World!” 프로그램부터 시작해 보겠습니다. 파이썬에서는 매우 간단합니다.
print("Hello, Beginner!")
이 한 줄은 다음을 수행합니다.
print()
: 이것은 내장 함수입니다. 함수는 특정 작업을 수행하는 재사용 가능한 코드 블록입니다. print()
는 사용자에게 출력을 표시합니다.("Hello, Beginner!")
: 괄호 안에는 문자열 리터럴이 있습니다. 문자열은 일련의 문자이며, 작은따옴표('...'
) 또는 큰따옴표("..."
)로 묶입니다.이 코드를 실행하면 파이썬 인터프리터가 print()
를 실행하여 "Hello, Beginner!"를 화면에 표시합니다.
변수는 데이터를 저장하는 데 중요합니다. 레이블이 지정된 컨테이너라고 생각하십시오. 설명적인 이름을 사용하고, 소문자로 시작하고, 밑줄을 사용하여 단어를 구분하는 것이 좋습니다 (예: my_variable
, user_age
). 다음은 예시입니다.
# 변수에 값 할당
message = "Welcome to Python!"
number = 10
pi = 3.14159
# 변수 값 출력
print(message)
print(number)
print(pi)
설명:
message = "Welcome to Python!"
: message
라는 변수가 생성되어 “Welcome to Python!” 문자열을 저장합니다.number = 10
: number
라는 변수가 정수 10
을 저장합니다.pi = 3.14159
: pi
라는 변수가 부동 소수점 숫자 3.14159
를 저장합니다.그런 다음 print()
가 이러한 값을 표시합니다. 파이썬은 동적 타입 언어입니다. 변수의 타입(문자열, 정수, 부동 소수점)을 명시적으로 지정할 필요가 없습니다. 파이썬은 할당된 값에서 타입을 추론합니다.
대화형 프로그램은 종종 사용자 입력을 필요로 합니다. 다음은 사용자 입력을 받는 방법입니다.
# 사용자 입력 받기
name = input("Please enter your name: ")
# 개인화된 인사말 출력
print("Hello, " + name + "!") # 문자열 연결
설명:
name = input("Please enter your name: ")
: input()
은 프로그램을 일시 중지하고 사용자가 무언가를 입력하고 Enter 키를 누를 때까지 기다린 다음 입력된 내용을 문자열로 name
에 저장합니다.print("Hello, " + name + "!")
: 인사말을 출력합니다. +
연산자는 문자열과 함께 사용될 때 문자열 연결을 수행하여 문자열을 결합합니다. 가독성을 위해 연결할 때 +
주위에 공백을 추가하는 것이 좋습니다.if
, else
, elif
조건문을 사용하면 프로그램이 결정을 내리고 조건이 참인지 거짓인지에 따라 실행되는 코드 블록을 제어할 수 있습니다.
age = int(input("Enter your age: "))
if age >= 18:
print("You are eligible to vote.")
elif age < 0:
print("That is an incorrect age.")
else:
print("You are not eligible to vote yet.")
분해:
age = int(input("Enter your age: "))
: 나이에 대한 사용자 입력을 받습니다. int()
는 입력(기본적으로 문자열)을 정수로 변환합니다.if age >= 18:
: age
가 18보다 크거나 같은지 확인합니다. 참이면 들여쓰기된 print
문이 실행됩니다.elif age < 0:
: 이전 if
조건이 거짓이면 이 조건을 확인합니다. 참이면 해당 블록이 실행됩니다. elif
는 "else if"를 의미하며 여러 조건을 순서대로 확인할 수 있습니다.else:
: if
또는 elif
조건이 모두 참이 아니면 else
아래의 들여쓰기된 코드가 실행됩니다. 들여쓰기는 파이썬에서 매우 중요합니다. if
, elif
, else
와 관련된 코드 블록을 정의합니다. 일관된 들여쓰기(일반적으로 4개의 공백)는 파이썬 코드가 올바르게 작동하는 데 중요합니다.for
로 코드 반복루프는 코드 블록을 반복합니다. for
루프는 시퀀스(예: 목록 또는 숫자 범위)를 반복합니다.
# 0-4까지 숫자 출력
for i in range(5):
print(i)
# 리스트 요소 출력
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
설명:
for i in range(5):
: range(5)
는 0부터 5까지(5는 포함하지 않음)의 숫자를 생성합니다. 루프는 이 시퀀스를 반복합니다. 각 반복에서 현재 숫자가 i
에 할당됩니다.for fruit in fruits:
: 이 루프는 fruits
목록을 반복합니다. 각 반복에서 현재 목록 요소가 fruit
에 할당됩니다.while
로 코드 반복while
루프는 조건이 참인 동안 계속됩니다.
count = 0
while count < 5:
print(count)
count += 1 # count 증가
설명:
count = 0
: count
를 0으로 초기화합니다.while count < 5:
: count
가 5보다 작은 동안 루프가 계속됩니다.count += 1
: 루프 내부에서 count
는 각 반복마다 1씩 증가합니다. 이렇게 하면 무한 루프(조건이 항상 참으로 유지되는 경우)를 방지할 수 있습니다.함수는 코드 재사용, 구성 및 가독성에 필수적입니다. 동일한 코드를 여러 번 반복하는 대신 함수를 한 번 정의하고 해당 기능이 필요할 때마다 호출할 수 있습니다. def
를 사용하여 직접 정의합니다.
# 함수 정의
def greet(name):
print("Hello, " + name + "!")
# 함수 호출
greet("Alice")
greet("Bob")
핵심 사항:
def greet(name):
: name
이라는 하나의 매개변수를 받는 greet
라는 함수를 정의합니다.print("Hello, " + name + "!")
: 함수의 본문—함수가 호출될 때 실행되는 코드입니다.greet("Alice")
: greet
함수를 호출하여 "Alice"를 인수로 전달합니다.개념을 결합하여 약간 더 복잡한 프로그램을 만들어 보겠습니다.
def calculate_area(length, width):
"""Calculates the area of a rectangle.""" # Docstring
area = length * width
return area
# Get dimensions
length = float(input("Enter length: "))
width = float(input("Enter width: "))
# Calculate area
rectangle_area = calculate_area(length, width)
# Print result
print("Area:", rectangle_area)
설명:
def calculate_area(length, width):
: length
와 width
를 매개변수로 받아 직사각형 면적을 계산하는 함수를 정의합니다. """..."""
는 함수를 설명하는 docstring입니다. Docstring은 문서화에 사용되며 help() 함수로 액세스할 수 있습니다.return area
: 함수는 계산된 면적을 반환합니다. return
문은 함수를 종료하고 값을 함수가 호출된 곳으로 다시 보냅니다.float()
를 사용하여 부동 소수점 숫자로 변환합니다. float()
를 사용하면 소수점 값을 허용하여 계산기를 더욱 다양하게 만듭니다.calculate_area
를 호출하여 치수를 전달하고 반환된 값을 rectangle_area
에 저장합니다.파이썬은 프로그램 흐름을 제어하기 위한 다른 도구를 제공합니다.
break
, continue
, else
break
: 가장 안쪽의 for
또는 while
루프를 종료합니다.continue
: 루프의 다음 반복으로 진행합니다.else
절: for
에서는 루프가 끝난 후 실행됩니다(break
가 발생하지 않은 경우). while
에서는 조건이 거짓이 된 후 실행됩니다(break
가 발생하지 않은 경우).#Example for break
numbers = [1, 2, 3, 4, 5]
for number in numbers:
if number == 3:
break # Exit the loop when number is 3
print(number) # Output: 1 2
#Example for continue
numbers = [1, 2, 3, 4, 5]
for number in numbers:
if number == 3:
continue # Skip to the next iteration when number is 3
print(number) # Output: 1 2 4 5
#Example for else
for i in range(5):
print(i)
else:
print("Loop finished") #It will be executed
for i in range(5):
if i==3:
break
print(i)
else:
print("Loop finished") #It won't be executed
match
문match
는 값을 패턴과 비교합니다. 다른 언어의 switch 문과 유사하지만 더 강력한 패턴 매칭 기능을 제공합니다. 파이썬 3.10부터 사용할 수 있습니다.
def http_error(status):
match status:
case 400:
return "Bad request"
case 401 | 403 | 404: # Multiple cases
return "Not allowed"
case 418:
return "I'm a teapot"
case _: # Default
return "Something's wrong"
print(http_error(404))
print(http_error(500))
_
는 와일드카드로, 다른 case와 일치하지 않으면 무엇이든 일치합니다.
파이썬에는 데이터를 구성하기 위한 내장 데이터 구조가 있습니다.
my_list = [1, 2, 3, "apple"]
my_list.append("cherry") # Add an element to the end
print(my_list[0]) # Access element by index (starting from 0)
my_list.remove(2) # Remove an element by value
print(my_list)
my_tuple = (1, 2, 3, "apple")
# my_tuple[0] = 5 # Error (immutable) - Tuples cannot be modified after creation
print(my_tuple[1])
my_set = {1, 2, 3, 3, 4, 5} # Duplicates are automatically removed
print(my_set) # Output: {1, 2, 3, 4, 5}
my_dict = {"name": "Alice", "age": 30}
print(my_dict["name"]) # Access value by key
my_dict["age"] = 31 # Modify a value
print(my_dict)
squares = [x**2 for x in range(10)] # List of squares
even = [x for x in range(20) if x % 2 == 0] # Even numbers
print(squares)
print(even)
모듈은 코드를 재사용 가능한 파일로 구성합니다. import
를 사용하여 다른 모듈의 기능에 액세스합니다.
import math
print(math.sqrt(16)) # Access the sqrt function from the math module
print(math.pi) # Access the pi constant
from math import sqrt # Import specific function
print(sqrt(25))
from math import * # Import all (generally avoid)
print(pi)
이것은 math
모듈(수학 함수를 제공)을 사용하는 방법을 보여줍니다. 특정 함수나 상수를 가져오면 코드 가독성을 높이고 이름 충돌을 피할 수 있습니다. *
를 사용하여 모든 것을 가져오는 것은 일반적으로 큰 프로젝트에서는 권장되지 않습니다.
함수는 인수에 대한 기본값을 가질 수 있습니다.
def greet(name, greeting="Hello"):
print(greeting + ", " + name + "!")
greet("Bob") # Uses default greeting
greet("Alice", "Hi") # Overrides default
keyword=value
구문을 사용하여 함수를 호출합니다.
def describe_pet(animal_type, pet_name):
print("I have a " + animal_type + " named " + pet_name + ".")
describe_pet(pet_name="Harry", animal_type="hamster") # Order doesn't matter
함수는 *args
를 사용하여 임의의 수의 위치 인수를 받을 수 있습니다.
def make_pizza(*toppings):
print("Making a pizza with:")
for topping in toppings:
print("- " + topping)
make_pizza("pepperoni")
make_pizza("mushrooms", "cheese", "peppers")
*toppings
는 모든 위치 인수를 toppings
라는 튜플로 수집합니다.
함수는 **kwargs
를 사용하여 임의의 수의 키워드 인수를 받을 수 있습니다.
def build_profile(first, last, **kwargs):
# Combines fixed and arbitrary keyword arguments to create a user profile.
profile = {'first_name': first, 'last_name': last}
profile.update(kwargs) # Updates profile with key-value pairs from kwargs.
return profile
user = build_profile("Albert", "Einstein", location="Princeton", field="physics")
print(user) # Output: {'first_name': 'Albert', 'last_name': 'Einstein', 'location': 'Princeton', 'field': 'physics'}
**kwargs
는 "keyword arguments"의 약자이며 추가적인 이름이 지정된 인수를 딕셔너리로 수집하기 위한 일반적인 명명 규칙입니다. 이를 통해 함수는 유연한 입력을 처리할 수 있습니다.
lambda
로 생성된 작고 익명 함수입니다.
add = lambda x, y: x + y
print(add(5, 3)) # Output: 8
pairs = [(1, 'one'), (2, 'two'), (3, 'three')]
pairs.sort(key=lambda pair: pair[1]) #sort by second element of tuple
print(pairs)
람다 함수는 이 예제의 sort
와 같이 고차 함수(다른 함수를 인수로 사용하는 함수)의 인수로 자주 사용됩니다.
클래스는 데이터(속성)와 해당 데이터에 대해 작동하는 기능(메서드)을 묶는 방법을 제공합니다. 객체 지향 프로그래밍의 주요 기능 중 하나이며, 객체에 대한 청사진을 만들 수 있습니다.
class Dog:
def __init__(self, name, age): #constructor
self.name = name
self.age = age
def bark(self):
print("Woof!")
my_dog = Dog("Buddy", 3) #instance of class
print(my_dog.name)
my_dog.bark()
설명:
class Dog:
: Dog
라는 클래스를 정의합니다.def __init__(self, name, age):
: 이것은 생성자(또는 초기화)입니다. 새로운 Dog
객체를 만들 때 자동으로 호출됩니다.
self
: 클래스의 인스턴스(작업 중인 특정 Dog
객체)를 나타냅니다. 클래스 내의 모든 메서드에서 첫 번째 매개변수입니다.def bark(self):
: 이것은 메서드—Dog
클래스에 속하는 함수입니다. 개의 데이터(이 간단한 예제에서는 사용하지 않지만 self.name
과 같이)에 액세스할 수 있습니다.my_dog = Dog("Buddy", 3)
my_dog
라는 Dog 클래스의 인스턴스를 만듭니다.반복자는 특정 구현에 관계없이 컬렉션의 모든 요소를 순회할 수 있게 해주는 객체입니다.
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
제너레이터는 리스트나 튜플과 같은 반복 가능한 타입입니다. 리스트와 달리 내용을 메모리에 저장하지 않고 yield
키워드를 사용하여 즉석에서 값을 생성합니다. 따라서 큰 시퀀스에 대해 메모리 효율적입니다. 또한 전체 리스트를 메모리에 생성하는 리스트 컴프리헨션과는 다릅니다.
def my_generator():
yield 1
yield 2
yield 3
for value in my_generator():
print(value)
#generator expression
squares = (x*x for x in range(10))
print(list(squares))
이러한 기본 사항은 파이썬 여정을 위한 견고한 기반을 제공합니다. 이러한 개념을 실험하고 결합하여 점점 더 정교한 프로그램을 구축할 수 있습니다. 모든 프로그래밍 언어를 마스터하려면 연습과 탐구가 핵심이라는 것을 기억하십시오.