Skip to main content

Command Palette

Search for a command to run...

[Python TIL] 🐍 Python 기초: 전역변수, 지역변수부터 모듈, 패키지, 웹 요청까지!

전역 변수와 지역 변수, 함수와 메서드, 인자와 매개변수, 모듈과 패키지

Updated
•4 min read•View as Markdown
K

I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).

파이썬을 처음 배우다 보면 헷갈리는 개념들이 있다. 예를 들어 전역 변수와 지역 변수, 함수와 메서드, 인자와 매개변수, 그리고 모듈과 패키지다. 이 글에서는 이 헷갈리는 개념들을 쉬운 설명과 실습 예제를 통해 명확히 이해해 보자.


1️⃣ 전역 변수와 지역 변수, 어디서 선언했느냐가 중요하다!

파이썬에서 변수의 생명주기는 어디에서 선언되었는지에 따라 달라진다.

  • 지역 변수(Local Variable) : 함수 내부에서 선언되며, 함수가 끝나면 사라진다.

  • 전역 변수(Global Variable) : 함수 외부에서 선언되며, 프로그램 전체에서 사용 가능하다.

🧠 비유: "밥 먹었어?"라는 말을 서울과 부산에서 각각 다르게 말하는 것과 같다. 변수도 어디서 쓰이느냐에 따라 다르게 작동한다.

✏️ 예시 코드

# 전역 변수
greeting = "밥 먹었어?"

print("서울 :", greeting)

def busan():
    # 지역 변수
    greeting = "밥 뭇나?"
    print("부산 :", greeting)

# 함수 실행
busan()

# 다시 전역 변수 출력
print("다시 서울 :", greeting)

🧾 실행 결과

서울 : 밥 먹었어?
부산 : 밥 뭇나?
다시 서울 : 밥 먹었어?

🔍 정리: 함수 안에서 같은 이름의 변수를 다시 선언해도, 이는 지역 변수로 간주되기 때문에 전역 변수에는 영향을 주지 않는다.


2️⃣ 함수와 메서드의 차이? 클래스가 관여하느냐의 문제!

파이썬에서 함수(function)와 메서드(method)는 모두 특정 기능을 수행하는 코드 블록이지만, 소속에 따라 다르게 불린다.

구분정의예시
함수독립적으로 정의된 기능def greet():
메서드클래스에 종속된 함수str.upper()

✏️ 예시 코드

# 함수
def hello():
    return "Hello!"

# 메서드
name = "python"
print(name.upper())  # 메서드: 문자열을 대문자로 변환

🧾 실행 결과

HELLO!
PYTHON

☝️ 정리: 클래스 내부에 정의된 함수가 메서드이다. 문자열의 .upper(), 리스트의 .append() 등은 모두 메서드다.

자주 묻는 질문 (FAQs)

질문

답변

함수랑 메서드는 뭐가 달라요?

함수는 독립적 / 메서드는 객체에 딸려 있는 함수

지역 변수는 함수 밖에서 못 써요?

맞아요. 함수 끝나면 사라져요

전역 변수 쓰면 안 돼요?

가능은 하지만, 복잡해지므로 가급적 피하는 게 좋아요

메서드 이름은 외워야 하나요?

아니요. 필요한 순간 dir(자료형)이나 공식 문서 보면 돼요


3️⃣ 인자(argument)와 매개변수(parameter), 비슷해 보여도 다르다!

함수를 다룰 때 자주 마주치는 두 단어, 바로 매개변수와 인자이다.

  • 매개변수(Parameter) : 함수를 정의할 때 사용하는 변수

  • 인자(Argument) : 함수를 호출할 때 전달하는 값

✏️ 예시 코드

def plusDouble(a, b):  # a, b는 매개변수
    return 2 * (a + b)

# 3, 4는 인자
print(plusDouble(3, 4))

🧾 실행 결과

14

🎯 외우는 팁:

  • 파라미터(Parameter)는 정의할 때

  • 아규먼트(Argument)는 사용할 때


4️⃣ 모듈과 패키지, 효율적인 코드 관리를 위한 필수 개념

📈 함수 → 모듈로 가는 사고 전환

함수를 많이 만들다 보면

"이런 함수들 묶어서 따로 정리해두면 안 될까?"

→ ✅ 이게 바로 모듈(module) 개념!

📦 모듈(Module) : .py 파일 하나

모듈은 하나의 파이썬 파일로, 자주 사용하는 함수들을 정의해 두고 import로 불러와서 쓸 수 있다.

① 사용자 정의 모듈 만들기

cal.py

def plus(a, b):
    return a + b

main.py

import cal

print(cal.plus(3, 4))  # 7

🧮 자주 쓰는 모듈 예시: math, random

import math
print(math.pi)  # 원주율
print(math.e)   # 자연로그 밑
3.141592653589793
2.718281828459045
import random
print(random.randrange(1, 11))  # 1~10 사이의 랜덤한 정수

📁 패키지(Package) : 폴더로 모듈을 묶는 구조

패키지는 여러 모듈을 폴더 단위로 정리해주는 개념이다. 패키지 안에는 __init__.py 파일이 있어야 한다. (파이썬 3.3 이후는 없어도 동작하지만 관례적으로 넣는다.)

예시 구조:

project/
├── user/
│   ├── __init__.py
│   └── cal.py  # plus 함수 정의됨
└── main.py

🛠 패키지 안의 모듈 사용법

방법 1: import로 전체 경로 불러오기

import user.cal
print(user.cal.plus(3, 4))

방법 2: from-import로 함수만 불러오기

from user.cal import plus
print(plus(3, 4))

⏰ time 모듈로 현재 시간 알아보기

import time
print(time.ctime())

🧾 실행 결과 예시

Tue Mar 26 12:34:56 2025

time.ctime()은 현재 시간을 "요일 월 일 시:분:초 연도" 형식으로 알려주는 함수이다.


📌urllib.request 모듈로 웹에서 데이터 가져오기

웹 페이지의 내용을 직접 가져오는 것도 파이썬으로 가능하다! 아래는 위키피디아에서 'Lorem Ipsum' 페이지를 가져오는 예제이다.

✏️ 실습 예제

from urllib import request  # request 모듈에서 함수 사용

url = "https://en.wikipedia.org/wiki/Lorem_ipsum"

# 웹 페이지 열고 → 읽고 → 문자열로 변환
temp1 = request.urlopen(url).read().decode("UTF-8")

# 가져온 결과 출력
print(temp1[:500])  # 너무 길어지지 않게 앞 500자만 출력

🧾 출력 예시 (일부)

<!DOCTYPE html>
<html class="client-nojs" lang="en" dir="ltr">
<head>
<meta charset="UTF-8"/>
<title>Lorem ipsum - Wikipedia</title>
...

📌 .urlopen()은 웹 페이지를 열고, .read()는 바이트 데이터를 읽으며, .decode()로 문자열로 바꾼다. 이 과정을 통해 HTML 문서를 텍스트로 가져올 수 있다.

📌 정리: 오늘 배운 핵심 개념 요약

개념설명
전역/지역 변수선언 위치에 따라 사용 범위가 달라짐
함수 vs 메서드메서드는 클래스에 속한 함수
매개변수/인자정의할 때는 매개변수, 호출할 때는 인자
모듈.py 파일 하나, import로 불러와 사용
패키지모듈들을 폴더 단위로 정리한 구조
대표 내장 모듈math, random, time 등 유용한 기능을 제공하는 표준 모듈

Python TIL

Part 7 of 26

알고리즘 풀이 중 마주친 Python 문법들을 기록합니다. 복잡한 개념도 쉽게 이해할 수 있도록 정리했어요. 필요할 때 빠르게 참고할 수 있는 문법 노트가 되었으면 좋겠습니다! 😊

Up next

[Python TIL] 아스키 코드(ASCII Code) 관련 함수 (feat. isdigit())

문자열에서 숫자만 골라내기

More from this blog

[Python 자료구조] Binary Tree(이진 트리) 개념과 배열

자료구조 중에서도 가장 자주 등장하고, 가장 중요한 트리 중 하나가 바로 이진트리(Binary Tree)이다.만약 자료구조 공부를 처음 시작했다면, 이진트리는 꼭 제대로 이해하고 넘어가야 할 핵심 개념이다. 그렇다면 이진트리는 도대체 어떤 구조이며, 왜 이렇게 중요할까? 🌳 이진트리란? 이진트리(Binary Tree)는 이름 그대로 자식 노드를 최대 두 개까지만 가질 수 있는 트리를 의미한다.자식 노드가 1개거나 0개일 수도 있지만, 최대...

Apr 8, 20253 min read

[Python 자료구조] Tree(트리) 구조

회사 조직도, 가계도, 또는 어떤 계층적인 구조를 표현할 때 자주 등장하는 그림이 있다. 바로 '트리 구조'이다. 그런데 이 구조를 처음 보면, "도대체 어디가 나무야?" 라고 생각할 수 있다. 하지만 나무를 거꾸로(180도 돌려서) 생각해보면 이해가 쉽다. 위쪽에 커다란 줄기(기둥)가 있고, 아래로 가지가 퍼져 나가는 모습과 아주 흡사하기 때문이다. 그래서 우리는 이런 구조를 트리(Tree) 구조라고 부른다. 🧩 트리(Tree)란 무엇인가...

Apr 8, 20253 min read

[Python 자료구조] Stack(스택)

스택 정의, 값 넣기/빼기 프로그래밍을 처음 접할 때 나오는 대표적인 자료구조 중 하나가 바로 스택(Stack) 이다. 이름만 들으면 어렵게 느껴질 수 있지만, 실제로는 우리 일상에서도 쉽게 찾아볼 수 있는 개념이다. 예를 들어 젠가(Jenga) 게임을 떠올려보자. 스택이란? 젠가로 이해하는 Stack의 원리 젠가 블럭을 하나씩 통에 넣고 꺼내는 상황을 상상해보자. 가장 최근에 넣은 블럭은 통의 가장 위에 쌓이게 된다. 그리고 꺼내고자 할 때...

Apr 7, 20253 min read

[Sql] 제약 조건과 무결성

SQL을 공부하다 보면 반드시 만나게 되는 용어들이 있다. 바로 기본키, 외래키, 무결성 제약 조건 같은 개념이다. 이 글에서는 이 용어들을 단순히 암기하는 게 아니라, 예시를 통해 자연스럽게 이해할 수 있도록 정리해보았다. 🎯 제약 조건이란? 제약 조건(Constraint)은 데이터베이스에 저장되는 데이터의 정확성과 신뢰성을 보장하기 위해 설정하는 규칙이다. ✅ 한 줄에 하나씩만 작성해야 하며, 테이블 생성 시 컬럼 옆에 정의하거나 AL...

Apr 7, 20253 min read

[Python TIL] Python에서 False와 True로 평가되는 값들

파이썬에서는 if 조건문이나 while 같은 컨트롤 흐름에서 자동으로 False로 간주되는 값들이 있다. 이걸 "Falsy 값" 또는 "Falsy Object" 라고 부른다. 이걸 알아두면 코드를 훨씬 깔끔하게 쓸 수 있다. 예를 들어, if not my_list: 같은 표현이 빈 리스트를 체크하는 데 쓰이기도 하기 때문이다. ⚠️ 파이썬에서 False로 평가되는 값들 (Falsy 값) 유형예시설명 숫자형0, 0.0, 0j정수, ...

Apr 6, 20252 min read

Code Compass

75 posts