코딩 입문자를 위한 파이썬 기초 문법 10가지 정리

처음 코딩을 배우겠다고 마음먹었을 때, 화려한 개발자 연봉이나 유튜브 알고리즘이 추천해주는 ‘7일 완성’ 같은 영상들에 마음이 팔랑거리더라고요. 하지만 막상 책상 앞에 앉아 검은 화면을 보니 어디서부터 손을 대야 할지 막막한 거예요. 그때 제가 택한 언어가 바로 파이썬이었습니다. 초보자 입장에서는 진입장벽이 낮다는 말에 혹해서 시작한 측면이 없지 않아 있어요.
그런데 이 파이썬, 정말 만만하게 봤다가 큰코다친 경험이 있거든요. 문법은 정말 사람 말처럼 직관적인데, 그 직관성에 속아서 기본기를 제대로 다지지 않고 무작정 ‘따라 하기’만 급급했던 거예요. 결국 남이 짜둔 코드만 복사해서 붙여 넣는 수준에서 벗어나질 못했고, 오타 하나 때문에 몇 시간을 허비한 적도 부지기수였어요.
사실 고수가 되려면 가장 기본적인 문법 10가지 정도는 눈 감고도 칠 수 있어야 한다는 걸 깨달았어요. 외국어를 배울 때 기초 회화와 단어 없이는 절대 늘지 않는 것처럼 말이죠. 그래서 오늘은 제가 지난 10년 동안 블로그를 운영하고 자동화 프로그램을 직접 만들면서 몸으로 부딪혀 깨달은 파이썬 기초 문법 10가지를 생생한 경험담과 함께 풀어드리려고 해요. 처음 시작하시는 분들, 특히 강의만 듣고 막막하신 분들이라면 이 글 하나로 기초 체력을 확실하게 다져보실 수 있을 거예요.
📋 목차
왜 하필 파이썬 문법인가에 대한 진짜 이야기
많은 분들이 파이썬을 쉽다고 이야기하는데, 사실 이 말에는 함정이 숨어 있어요. 문법이 쉽다는 건 그만큼 컴퓨터가 우리 머릿속 추상적인 생각을 빨리 구현해준다는 의미인데, 반대로 말하면 컴퓨터의 메모리 구조나 동작 원리를 모르는 상태에서도 ‘일단 돌아가는’ 코드를 만들게 된다는 뜻이거든요. 저는 이 안일함에 빠져서 1년 넘게 실무에서는 전혀 쓸 수 없는 스파게티 코드만 양산했던 아픈 기억이 있어요.
제가 자바와 파이썬을 둘 다 접해본 입장에서 느낀 결정적인 차이는 ‘숨 쉬는 느낌’이었어요. 자바는 마치 대기업의 보고 체계처럼 클래스와 메서드를 엄격하게 정의해야 첫 줄을 쓸 수 있는 반면, 파이썬은 그냥 메모장 켜고 바로 생각을 적어 내려가면 되는 스케치북 같은 느낌이었어요. 하지만 이 자유로움이 독이 되어, 어디서부터 설계를 해야 하는지에 대한 감각을 무디게 만들더라고요.
그래서 기초 문법을 배울 때 단순히 ‘print()는 출력하는 함수다’라는 식으로 외우기보다는, ‘왜 이 문법이 효율적인가’를 고민하는 시간이 반드시 필요해요. 예를 들어 파이썬의 리스트는 얼핏 보면 그냥 배열인데, 타입을 섞어서 담을 수 있다는 특징 하나가 코드의 유연성을 얼마나 극적으로 바꾸는지를 아는 게 진짜 실력이거든요. 지금부터 그 핵심적인 문법들을 하나씩 해부해 볼게요.
변수와 데이터 타입, 상자에 담는다는 개념 버리기
코딩 입문자들이 가장 먼저 배우는 게 변수잖아요. 흔히들 변수를 ‘값을 담는 상자’라고 표현하는데, 저는 이 비유가 오히려 머리를 굳게 만든다고 생각해요. 파이썬에서 변수는 상자가 아니라 ‘객체를 가리키는 포스트잇’에 가깝거든요. 같은 값을 두 변수가 공유할 수도 있고, 데이터 타입이 언제든 바뀔 수 있다는 사실이 상자라는 개념과 충돌해서 초반에 머릿속이 복잡해지더라고요.
문자열과 정수형을 다루는 방법도 정말 독특해요. 특히 주의할 점은 문자열을 조작할 때입니다. 문자열은 변경 불가능한(immutable) 성질을 가져서, 한 글자만 바꾸려고 해도 완전히 새로운 문자열이 생성된다는 사실을 모르면 메모리가 터지는 경험을 할 수도 있어요. 대용량 텍스트를 다룰 때 + 연산자로 문자열을 무식하게 합쳤다가 프로그램이 몇 분째 멈춰 버리던 과거가 떠오르네요.
형 변환도 기초 중의 기초인데 실전에서는 이게 굉장한 복병이거든요. 사용자에게 input()으로 값을 받으면 무조건 문자열로 들어오는데, 이걸 숫자로 바꾸지 않고 연산했다가 엉뚱한 결과가 나오는 경우가 다반사예요. 저도 초기에 1+1을 ‘11’로 출력해놓고 왜 이런지 몰라 밤을 새웠던 적이 있습니다. 이 시기에는 변수명을 좀 길게 지어서라도 데이터의 성격을 명확히 하는 습관을 들이는 게 나중에 큰 도움이 되어요.
실수 방지 포인트
타입 확인은 항상 type() 함수를 습관처럼 찍어보는 것이 좋아요. 특히 API 응답을 받아올 때 dict인지 str인지 헷갈려서 발생하는 KeyError는 이 작은 습관 하나로 대부분 예방할 수 있거든요.
조건문과 반복문, 들여쓰기가 생명인 이유
파이썬의 꽃은 단연 들여쓰기 문법이에요. 다른 언어에서는 중괄호({})로 코드 블록을 감싸는데, 파이썬은 스페이스 4칸으로 논리적인 깊이를 표현합니다. 처음에는 ‘이게 무슨 대수인가’ 싶은데, 협업을 하다 보면 이 들여쓰기가 코드의 가독성을 강제하는 놀라운 장치라는 걸 느끼게 되어요. if 문 뒤에 콜론(:)을 빼먹어서 무한 에러의 늪에 빠지는 건 거의 통과 의례 같은 것이긴 해요.
조건문을 쓸 때 if-elif-else의 순서가 매우 중요하거든요. 단순한 조건부터 걸러내는 것이 아니라, 가장 까다롭고 범위가 좁은 조건을 최상단에 배치하는 전략이 필요해요. 저는 예전에 데이터 분석 스크립트를 짜면서 이 순서를 잘못 잡는 바람에 전체 메일 발송 대상을 잘못 걸러서 사내 인트라넷에 사과 공지 올린 적도 있답니다.
반복문은 for와 while로 나뉘는데, 솔직히 초보 때는 둘의 차이를 책으로 봐서는 감이 절대 안 오더라고요. 아래 표를 보시면 제가 실무에서 느낀 가장 큰 차이가 명확해져요.
| 구분 | for 반복문 | while 반복문 |
|---|---|---|
| 철학 | 순회(Iteration)에 특화 | 조건 충족까지 지속 |
| 사용 상황 | 리스트, 파일 등 컨테이너 요소를 하나씩 꺼낼 때 | 게임 서버, 센서 모니터링 등 종료 조건이 명확할 때 |
| 위험성 | 상대적으로 안전함 (범위가 정해짐) | 조건 미충족 시 무한 루프에 빠질 가능성 높음 |
break와 continue 활용도 정말 중요한데, 특히 continue는 코드를 한 줄이라도 줄이려는 욕심에 남발하다가 로직을 꼬이게 만든 대표적인 문법이에요. 반복문 안에서 특정 조건일 때 아무것도 하지 않고 넘어가고 싶다면, 차라리 아예 필터링된 새로운 리스트를 만드는 리스트 컴프리헨션을 검토해 보는 게 더 나은 선택일 수도 있답니다.
김창수의 디버깅 꿀팁
무한 루프가 의심될 때는 while 조건문 안에 print(‘현재 상태:’, 변수)를 임시로 찍어보세요. 이 작은 습관이 복잡한 디버거 툴보다 더 빠르게 문제를 잡아내는 경우가 많거든요.
리스트와 문자열 다루기, 데이터 요리의 기본기
파이썬에서 가장 사랑받는 자료형이 바로 리스트라고 생각해요. 대괄호([])로 묶어서 정말 만능으로 쓸 수 있는데, 초보자는 대부분 ‘순서가 있는 상자들의 모음’으로만 이해해요. 하지만 리스트의 진가는 슬라이싱(slicing)에서 나오거든요. [1:5]와 같은 문법을 자유자재로 쓸 수 있어야 데이터 처리가 10배는 빨라져요. 저는 엑셀처럼 하나하나 클릭해서 데이터를 옮기던 사람이 한 번에 수천 개의 항목을 자르고 붙이는 쾌감에 매료되어 밤을 꼬박 새웠던 기억이 나네요.
문자열과 리스트는 서로 닮은 점이 정말 많아요. split()과 join()은 거의 세트로 알아둬야 하는데, 특히 크롤링한 텍스트 데이터를 가공할 때 이 두 가지가 없으면 일일이 노가다를 해야 하거든요. 문자열 안에 내장된 메서드인 replace(), find(), strip() 등을 조합해서 원하는 정보를 뽑아내는 순간, 코딩이 이렇게 논리적인 레고 놀이구나 싶은 깨달음이 와요.
불변성이라는 특성 때문에 문자열을 더할 때마다 메모리가 낭비되니까, 실무에서는 거의 f-string을 사용하는 게 국룰이에요. f’{변수}’ 이 문법 하나가 코드의 가독성을 얼마나 높이는지 모릅니다. 예전에는 %s나 format()을 썼지만, 이제는 f-string을 쓰면 마치 빈칸 채우기 퍼즐을 하는 것처럼 직관적으로 코드가 읽히더라고요.
함수 정의, 복잡한 세상을 단순하게 포장하는 기술
def 키워드를 보면 아직도 가슴이 살짝 떨려요. 함수를 정의한다는 건, 내가 자주 반복하는 행동을 하나의 도구로 만든다는 의미잖아요. 그런데 입문자들이 가장 많이 하는 실수가 ‘하나의 함수에 너무 많은 일을 시키는 거’예요. 저도 처음에는 만능 유틸리티 함수를 하나 만들고 자랑스러워했는데, 나중에 유지보수하려고 보니 이게 도저히 고칠 수 없는 거대한 괴물이 되어 있더라고요.
매개변수(parameter)와 인자(argument)를 구분하는 것, 그리고 기본값을 설정하는 건 정말 중요한 노하우예요. 함수를 정의할 때 기본값으로 리스트를 주면 안 된다는 함정도 유명하죠. 저는 이걸 몰라서 함수를 호출할 때마다 데이터가 누적되는 버그를 경험했고, 원인을 찾기까지 꼬박 이틀을 소비했어요. 정말 머리 쥐어뜯는 심정이었답니다.
리턴(return)의 존재를 잊는 것도 초보 때 자주 하는 실수인데, return이 없는 함수는 None을 반환한다는 사실을 늘 기억해야 해요. 결과값을 변수에 담았는데 계속 NoneType 에러가 떠서 며칠 동안 고생했던 기억이 나요. 함수는 블랙박스처럼, 입력과 출력에 집중해 마치 공장의 컨베이어 벨트 하나를 설계한다는 느낌으로 접근하는 게 가장 좋아요.
변경 가능한 객체 주의보
def add_item(item, target_list=[]) 이렇게 절대 작성하지 마세요. 저처럼 모든 고객 데이터가 한 리스트에 쌓여서 혼비백산하는 사태가 발생할 수 있거든요. 대신 None을 기본값으로 넣고 함수 내부에서 새로운 리스트를 생성해야 안전해요.
파일 입출력과 모듈 개념, 프로그램을 현실로 확장하기
단순히 화면에 출력만 하는 걸 넘어서, 실제 컴퓨터 파일을 읽고 쓰는 순간부터 코딩이 진짜 생활 도구로 바뀌는 걸 느꼈어요. open() 함수와 with 구문은 거의 하나의 세트라고 봐도 무방해요. 예전에 with를 안 쓰고 close()를 호출하는 걸 깜빡해서 작업 중이던 엑셀 파일이 통째로 날아간 기억이 있어요. 그 이후로는 무조건 with open() as f: 구문만 쓴답니다.
인코딩 문제는 초보자에게 큰 절망을 안겨주는 부분이에요. 열심히 크롤링해서 CSV로 저장했는데 엑셀에서 열어보니 한글이 전부 깨져 있는 그 슬픔... 저는 encoding=‘utf-8-sig’로 설정하는 것의 위대함을 뒤늦게 깨닫고서야 이 문제에서 완전히 해방되었습니다. 인코딩은 사소해 보이지만, 데이터 다루는 실무에선 거의 생명줄과 같아요.
모듈은 마치 남이 잘 만들어 놓은 도구 상자를 빌려 쓰는 느낌이에요. import os, import sys 정도는 이제 눈감고도 쓸 수 있어야 해요. 특히 pip를 통한 외부 라이브러리 설치는 파이썬 생태계의 힘이고, requests나 beautifulsoup4 같은 모듈을 처음 성공적으로 깔아서 크롤링에 성공했을 때의 짜릿함은 아직도 생생하거든요.
📌 함께 읽으면 좋은 글
코딩 입문자를 위한 파이썬 설치부터 첫 실행까지 과정비전공자도 1시간 만에 시작하는 파이썬 기초 문법과 실행 환경...파이썬으로 시작하는 코딩 입문: 컴퓨터 언어의 기초 학습업무 효율 30% 상승하는 윈도우11 필수 단축키 10가지 활...초보 시절 밤새며 물어봤던 질문들
Q. = 과 == 의 차이를 아직도 혼동해요. 어떻게 구별하죠?
A. =는 오른쪽 물건을 왼쪽 포스트잇에 ‘붙인다’는 개념이에요. ==는 ‘둘이 같아?’라고 묻는 질문이고요. 저는 =를 ‘할당 연산자’, ==를 ‘비교 연산자’로 부르며 입에 붙을 때까지 중얼거렸어요. if문 안에서 =를 쓰면 에러가 나는 경우가 많으니 금방 익숙해지실 거예요.
Q. 파이썬 2와 3 중 어떤 걸 공부해야 하나요?
A. 고민 없이 파이썬 3 최신 버전을 쓰세요. 파이썬 2는 이미 수명이 끝난 지 오래되었거든요. print문 괄호 유무 같은 사소한 차이에 발목 잡히지 말고, 최신 문법에 집중하는 게 훨씬 유리해요.
Q. 에러 메시지가 무서워요. 영어라 더 무섭습니다.
A. 사실 프로그래머들도 매일 에러 메시지를 봐요. 겁먹지 말고 제일 마지막 줄부터 읽는 습관을 들이세요. 보통 SyntaxError나 IndentationError 등 에러 이름만 봐도 원인의 반은 잡힌답니다. 모르는 에러는 그대로 복사해서 구글에 검색해도 되고요. 검색 능력도 실력이에요.
Q. 스페이스 4칸이 중요한가요? 2칸은 안 되나요?
A. 4칸이 PEP 8이라는 파이썬 코딩 스타일 가이드의 표준이에요. 어떤 에디터를 쓰든 Tab 키 한 번에 스페이스 4칸이 입력되게 세팅해 두세요. 개인적으로 2칸도 문법적으로는 문제가 없을 수 있지만, 다른 사람과 협업하거나 오픈소스를 볼 때 4칸에 맞춰지지 않으면 눈이 심하게 피로해져요.
Q. 주석은 얼마나 자주 달아야 하나요?
A. ‘어떻게’가 아니라 ‘왜’ 이 로직을 썼는지에 집중해서 다는 게 좋아요. 초보 시절에는 일단 가능한 한 많이 적어두는 걸 추천해요. 한 달 뒤에 내가 짠 코드를 봤을 때 한눈에 알아볼 수 있는 정도면 충분해요. 나쁜 코드에 주석을 덕지덕지 붙이는 것보다, 코드를 깔끔하게 리팩토링하는 게 더 나은 주석 방식이에요.
Q. 리스트와 튜플, 도대체 어떤 걸 써야 하나요?
A. 쉽게 말해 평생 변하지 않을 데이터라면 튜플을 쓰고, 추가/삭제가 필요하다면 리스트를 쓰세요. 좌표값이나 요일 같은 건 튜플에 담으면 실수로 값이 바뀌는 걸 미리 막을 수 있어서 안전하거든요. 하지만 일단 초보 단계에서는 거의 리스트가 주력이라고 생각하시면 편해요.
Q. 왜 제 코드만 실행하면 컴퓨터가 느려지나요?
A. 십중팔구 반복문 안에서 불필요한 연산을 하거나, 아까 말씀드린 것처럼 문자열을 +로 계속 연결하고 있을 가능성이 99%예요. 아니면 아주 큰 파일을 한 번에 메모리에 올리려는 것일 수도 있고요. join을 사용하거나, 파일을 라인 단위로 처리하도록 바꾸면 극적으로 빨라지는 경험을 하실 거예요.
Q. 전역 변수랑 지역 변수가 너무 헷갈려요.
A. 함수 안에서 만든 변수는 기본적으로 그 함수의 비밀 노트 같은 거예요. 밖에서 뭘 썼든 안에서는 안 보이고, 안에서 쓴 건 밖에 영향을 주지 않아요. 저는 이걸 ‘방음실 규칙’이라고 외웠는데, 함수 안에서 굳이 밖의 변수를 써야겠다면 global이라는 키워드를 붙여야 해요. 다만 웬만하면 이마저도 쓰지 않는 걸 권장해요. 데이터가 오염될 위험이 커지거든요.
Q. 코딩 문제 풀 때 말고 실생활에 어떻게 적용하죠?
A. 단순 반복 클릭이나 파일명 일괄 변경 같은 게 생각나지 않으신다면, 일단 ‘내가 오늘 한 업무’를 종이에 적어보세요. 그중에 똑같은 패턴이 세 번 이상 반복된다면 무조건 코드로 자동화할 수 있는 영역이에요. 저는 매주 금요일 장부 정리하던 걸 파이썬 스크립트 20줄로 바꾸고 평생 써먹는 중이랍니다.
Q. 하다 보면 자꾸 문법을 까먹어요. 계속 구글 검색해도 되나요?
A. 현직 개발자도 다 그렇게 합니다. 중요한 건 문법 암기가 아니라 문제 해결 능력이에요. 다만 리스트 컴프리헨션 같은 건 계속 보다 보면 손에 익으니까 너무 스트레스 받지 마세요. 즐겨찾기에 파이썬 공식 문서 하나만 걸어둬도 큰 도움이 된답니다.
가끔 지나간 시간을 돌아보면, 파이썬이라는 언어는 정말 좋은 동반자였던 것 같아요. 시작할 땐 콘솔창에 이름 석 자 출력하고 좋아했던 사람이, 어느 순간 복잡한 데이터를 분석하는 코드를 술술 짜고 있는 자신을 발견하게 되더라고요. 문법 하나하나에 쫄 필요 정말 없어요. 중요한 건 오늘 배운 리스트 슬라이싱으로 지금 내 폴더에 있는 지저분한 파일 이름 100개를 단 5분 만에 정리해보는 경험 하나인 거거든요.
앞으로도 길을 잃고 방황할 때면 다시 기초 문법으로 돌아오시길 바래요. 기초라는 건 단단한 나무 뿌리와도 같아서, 태풍이 불어 고개를 숙여도 절대 뽑히지 않게 해주는 힘이에요. 여러분의 앞길에 SyntaxError 대신 기분 좋은 결과만 가득하길 진심으로 응원할게요.
✍️ 작성자 소개: 10년 차 라이프 블로거 김창수입니다. 반복되는 야근에 지쳐 파이썬 자동화의 세계에 입문한 이후, 복잡한 업무 프로세스를 단순화하는 데 진심인 평범한 직장인이에요. 지금은 마케팅 데이터 분석과 업무 자동화 툴 제작을 취미로 삼으며, 초보자의 눈높이에 맞춘 현실적인 코딩 꿀팁을 나누고 있습니다.
⚠️ 면책조항: 본 게시글은 작성자의 개인적인 학습 경험을 바탕으로 한 정보 제공 목적의 콘텐츠입니다. 파이썬 문법 및 표준 라이브러리는 지속적으로 업데이트되므로, 프로젝트 적용 시에는 반드시 공식 문서를 참고하시길 권장합니다. 이 글을 통해 발생할 수 있는 코드 오류나 데이터 손실에 대해서는 법적 책임을 지지 않음을 명확히 밝힙니다.
댓글
댓글 쓰기